New file.
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
e548be5f
MV
12004-09-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
2
eb8d0af1
MV
3 * Makefile.am (EXTRA_libguile_la_SOURCES): Removed "alloca.c".
4
e548be5f
MV
5 * eq.c (real_eqv): Pretend that all NaNs are equal.
6
7 * numbers.c (scm_integer_expt): Do not accept inexact integers.
8
e7acba81
MV
92004-09-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
10
874fbad1
MV
11 * srfi-13.c (scm_string_trim_right, scm_string_xcopy_x): Correctly
12 use size_t for some locals instead of int.
13
e7acba81
MV
14 * read.c (scm_flush_ws): Detect "#!"-style comments here.
15 (scm_lreadr): Abort on seeing "#!", which should no longer happen.
16 (skip_scsh_block_comment): Use scm_input_error instead of
17 scm_misc_error in case of EOF.
18
5de12658
KR
192004-09-07 Kevin Ryde <user42@zip.com.au>
20
21 * numbers.c (scm_integer_expt): Reject exponent +/-inf.
5de12658
KR
22 Bug report by Bill Schottstaedt.
23
24 * ports.c (scm_getc, scm_lfwrite): Recognise \a \b and \r for port
25 column.
26 * ports.h (SCM_ZEROCOL, SCM_DECCOL): New macros.
27
28 * posix.c (scm_access): Update docstring per manual.
29
30 * posix.c (scm_nice): Correction to error detection. Reported by
31 Matthias Koeppe.
32
33 * stime.c (scm_current_time, scm_gettimeofday, scm_strptime): Don't
34 throw error before unlocking mutex with SCM_ALLOW_INTS.
35
e227addf
KR
362004-09-06 Kevin Ryde <user42@zip.com.au>
37
38 * stime.h (SCM_TIME_UNITS_PER_SECOND): Use sysconf(_SC_CLK_TCK) when
39 available. This also gets around CLK_TCK being absent when
40 _GNU_SOURCE and _POSIX_C_SOURCE are defined in stime.c.
41
edea856c
SJ
422004-09-03 Stefan Jahn <stefan@lkcc.org>
43
44 * threads.c (scm_threads_mark_stacks): Fixed local variable
45 definitions.
46
e7acba81 47 * strings.c (scm_i_substring_copy, scm_string_append): Fixed
edea856c
SJ
48 local variable definitions.
49
50 * stime.c (_POSIX_C_SOURCE): Do not define this item on
51 MinGW32 because it conflicts with its pthread headers.
874fbad1
MV
52 (scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
53 (scm_strftime): Using scm_from_locale_string() instead of
edea856c
SJ
54 scm_makfrom0str().
55
874fbad1 56 * posix.c (scm_putenv): Fixed typo in the !HAVE_UNSETENV
edea856c
SJ
57 part.
58
59 * numbers.c (scm_init_numbers): Removed check_sanity() call
60 inside GUILE_DEBUG. The function has been removed somewhen...
61
62 * filesys.c (_POSIX_C_SOURCE): Do not define this item on
63 MinGW32 because it conflicts with its pthread headers.
64
d9eb2d67
MV
652004-08-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
66
67 * strings.c (SCM_STRINGP): Accept all strings.
68 (SCM_STRING_CHARS): Reject shared substrings here.
69
70 * script.c (scm_compile_shell_switches): Added 2003 and 2004 to
71 the Copyright years.
72
c495c342
KR
732004-08-27 Kevin Ryde <user42@zip.com.au>
74
75 * socket.c (scm_fill_sockaddr): Use HAVE_STRUCT_SOCKADDR_SIN_LEN and
76 HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN for sockaddr fields, SIN_LEN and
77 SIN_LEN6 are not defined on all systems. Reported by Michael Tuexen.
78
57aa5515
MV
792004-08-26 Marius Vollmer <marius.vollmer@uni-dortmund.de>
80
81 * strings.h, strings.c (scm_i_make_symbol): Added FLAGS parameter.
82 * symbols.h, symbols.c (SCM_I_F_SYMBOL_UNINTERNED,
83 scm_i_symbol_is_interned, scm_i_mem2symbol,
84 scm_i_mem2uninternedsymbol): Use it to store uninternedness flag.
85
ce25760f
MV
862004-08-25 Marius Vollmer <marius.vollmer@uni-dortmund.de>
87
19ff6ffc
MV
88 * srfi-13.c: First cut at thread-safeness and proper use of
89 scm_i_string_chars et al. Copious scm_remember_upto_heres have
90 been inserted. Made sure that no internal string pointer is used
91 across a SCM_TICK or a possible GC.
92
ce25760f
MV
93 * script.c (scm_compile_shell_switches): Use
94 scm_from_locale_string instead of scm_makfrom0str.
95
96 * srfi-13.c (scm_string_rindex): Export to Scheme, as it has
97 always been.
98
c5080b51
MV
992004-08-25 Marius Vollmer <mvo@zagadka.de>
100
101 Moved SRFI-13 and SRFI-14 into the core, taking over the role of
102 strop.c.
103
104 * srfi-13.c, srfi-13.h, srfi-14.c, srfi-14.h: New files.
105 * strop.h, strop.c: Removed, they are now empty.
106 * Makefile.am: Updated for new and removed files.
107
108 * symbols.h, symbols.c (scm_string_ci_to_symbol): Moved here, next
109 to scm_string_to_symbol.
110
111 * chars.c (scm_char_alphabetic_p, scm_char_numeric_p,
112 scm_char_whitespace_p, scm_upper_case_p, scm_lower_case_p,
113 scm_char_is_both_p): Use scm_char_set_contains_p with the proper
114 charset instead of libc functions.
115
116 * strorder.c (scm_string_equal_p, scm_string_ci_equal_p,
117 scm_string_less_p, scm_string_leq_p, scm_string_gr_p,
118 scm_string_geq_p, scm_string_ci_less_p, scm_string_ci_leq_p,
119 scm_string_ci_gr_p, scm_string_ci_geq_p): Use scm_string_eq, etc
120 instead of explicit code.
121
122 * deprecated.c, load.c, posix.c, unif.c, symbols.c: Include
123 "srfi-13.h" instead of "strop.h".
124
125 * init.c (scm_init_guile_1): Call scm_init_srfi_13 and
126 scm_init_srfi_14. Do not call scm_init_strop.
127
4b0d27f2
MV
1282004-08-24 Marius Vollmer <marius.vollmer@uni-dortmund.de>
129
130 * numbers.c (scm_inf_p): Synced docstring back from manual.
131
3ece39d6
MV
1322004-08-22 Marius Vollmer <mvo@zagadka.de>
133
134 * strings.c (get_str_buf_start): New helper function.
135 (scm_i_substring, scm_i_substring_copy, scm_i_substring_shared,
136 scm_i_string_char, scm_i_string_writable_chars): Use it.
137 (scm_i_substring_copy): Make START argument optional for C
138 callers, for upcoming SRFI-13 integration.
139
1402004-08-21 Marius Vollmer <mvo@zagadka.de>
141
142 From Richard Todd, Thanks!
143
144 * script.c (scm_compile_shell_switches): added '-L' switch to add
145 to the %load-path.
146
5fa0939c
DH
1472004-08-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
148
149 * eval.c (unmemoize_exprs): When dropping internal body markers
150 from the output during unmemoization, also drop those that are not
151 immediately at the beginning of a body.
152
2146fdeb
MV
1532004-08-20 Marius Vollmer <marius.vollmer@uni-dortmund.de>
154
c1f54b3d
MV
155 * eval.c (scm_lookupcar1): Report "Variable used before given a
156 value" insetad of an "Unbound" one for variables that are found
157 but still contain SCM_UNDEFINED.
2146fdeb
MV
158
159 * posix.c (scm_mkstemp): Correction to the correction, mkstemp
160 expects a null-terminated string in the locale encoding, but
161 scm_i_string_writable_chars doesn't give that. Fixed by letting
162 mkstemp modify a locale version of the tmpl argument and copying
163 the result back into tmpl.
164
165 * strop.c (scm_substring_move_x): Store into str2, not str1.
166
d4f76919
KR
1672004-08-20 Kevin Ryde <user42@zip.com.au>
168
169 * posix.c (scm_mkstemp): Correction to new locale_string stuff, need
170 to modify the input string.
171
b5247a6b
MV
1722004-08-19 Marius Vollmer <mvo@zagadka.de>
173
174 * deprecated.c (SCM_SYMBOL_CHARS): Cast away const in return.
175 (SCM_SYMBOL_LENGTH): It's scm_i_symbol_length, not
176 scm_c_symbol_length.
177
f26b9395
MV
1782004-08-19 Marius Vollmer <marius.vollmer@uni-dortmund.de>
179
180 New string implementation, with copy-on-write strings and
181 mutation-sharing substrings, and a new internal string API.
182 Symbols can now share memory with strings.
183
184 * tags.h (scm_tc7_stringbuf): New tag.
185
186 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
187 scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
188 replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all
189 uses.
190 (scm_i_make_string, scm_c_make_string): New, to replace
191 scm_allocate_string. Updated all uses.
192 (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
193 SCM_STRING_LENGTH): Deprecated.
194 (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
195 scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
196 Discouraged. Replaced all uses with scm_from_locale_string or
197 similar, as appropriate.
198 (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
199 scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
200 scm_substring_shared, scm_substring_copy): New.
201
202 * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
203 SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
204 SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
205 scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
206 (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
207 Deprecated.
208 (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
209 SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
210 (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
211 New, to replace scm_str2symbol and scm_mem2symbol, respectively.
212 Updated all uses.
213 (scm_gensym): Generate only the number suffix in the buffer, just
214 string-append the prefix.
215
216 * error.c (scm_memory_error): Do not try to throw, just abort.
217 Throwing will not work anyway.
218
219 * gh.h, gh-data.c (gh_set_substr): Made src const.
220
221 * ports.c (scm_i_mode_bits_n): New, for counted strings.
222 (scm_mode_bits): Use it.
223 (scm_c_port_for_each): Blocking GC does not seem to work, allocate
224 a vector normally and fill that instead of consing a list with a
225 blocked GC.
226
227 * read.c (scm_i_casei_streq): New, for counted strings.
228
229 * threads.c (gc_section_count): Removed, thread-sleeping can not
230 be nested.
231 (scm_i_thread_put_to_sleep): Call scm_i_leave_guile before locking
232 admin mutex so that we can be put to sleep by other threads while
233 blocking on that mutex. Lock all the heap mutex of all threads,
234 including ourselves.
235 (scm_i_thread_wake_up): Unlock all threads, including ourselves,
236 call scm_i_enter_guile.
237 (scm_thread_mark_stacks): Expect all threads to be suspended.
238
239 * gc.h, gc.c (scm_i_gc_admin_mutex): New, to protect
240 scm_gc_mallocated, for now.
241 (scm_init_storage): Initialize it.
242 * gc-malloc.c (descrease_mtrigger, increase_mtrigger): Use it.
243
244 * gc-mark.c (scm_gc_mark_dependencies): Call scm_i_string_mark,
245 scm_i_stringbuf_mark and scm_i_symbol_mark, as appropriate.
246 * gc-card.c (scm_i_sweep_card): Call scm_i_string_free,
247 scm_i_stringbuf_free and scm_i_symbol_free, as appropriate.
248
cd505b38
MV
249 * strop.c (scm_string_copy): Use scm_c_substring to get a
250 copy-on-write string.
251
8a807b26
KR
2522004-08-18 Kevin Ryde <user42@zip.com.au>
253
254 * arbiters.c (FETCH_STORE): New macro.
255 (SCM_LOCK_VAL, SCM_UNLOCK_VAL): New constants.
256 (SCM_LOCK_ARB, SCM_UNLOCK_ARB): Remove, effectively absorbed into
257 scm_try_arbiter and scm_release_arbiter.
258 (scm_try_arbiter, scm_release_arbiter): Use FETCH_STORE to get xchg
259 for speed on i386, otherwise using mutex.
260
261 * eq.c (scm_equal_p): Remove real==fraction and fraction==real, they
262 must be #f according to R5RS. (equal? follows eqv?, and for eqv? an
263 exact and inexact is #f.)
264
265 * fports.c (fport_print): Use scm_ttyname instead of ttyname directly,
266 to get thread safety of scm_ttyname.
267
268 * ports.c (ttyname): Remove prototype, unused.
269
d6cd4c36 270 * socket.c (scm_init_socket): Add SOCK_SEQPACKET and SOCK_RDM.
1f3cc0d3 271 Reported by Michael Tuexen.
d6cd4c36 272
fa0c0a4b
MV
2732004-08-13 Marius Vollmer <marius.vollmer@uni-dortmund.de>
274
275 * load.c (scm_init_load_path): Do not pass NULL to
276 scm_to_locale_string, which would happen when GUILE_LOAD_PATH is
277 not set. Thanks to Bill Schottstaedt.
278
70f7ee41
MV
2792004-08-12 Marius Vollmer <marius.vollmer@uni-dortmund.de>
280
281 * socket.c (scm_inet_aton, scm_inet_pton): Convert SCM strings to
282 locale strings instead of accessing their internals.
283 (scm_recv, scm_send, scm_recvfrom, scm_sendto): Use
284 SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH instead of
285 SCM_STRING_CHARS and SCM_STRING_LENGTH.
286
287 * simpos.c (scm_system): Convert SCM strings to locale strings
288 instead of accessing their internals.
289
290 * script.c (scm_compile_shell_switches): Convert version to locale
291 string before printing it.
292
293 * rdelim.c (scm_read_delimited_x): Avoid
294 SCM_VALIDATE_SUBSTRING_SPEC_COPY and use scm_from_size_t instead
295 of scm_from_long for the returned number of read characters.
296
297 * ioext.c (scm_fdopen): Use scm_i_fdes_to_port together with
298 scm_i_mode_bits to avoid accessing internals of SCM string from C.
299
300 * filesys.c (STRING_SYSCALL, STRING2_SYSCALL): New helper macros.
301 Use them instead of SCM_SYSCALL when one or two strings need to be
302 converted into locale strings.
303 (my_rename): New, gathers platform dependent code for renaming.
304 (scm_rename): Use it.
305 (scm_readlink, scm_copy_file): Convert SCM strings to locale
306 strings instead of accessing their internals.
307 (scm_basename, scm_dirname): Use SCM_I_STRING_CHARS and
308 SCM_I_STRING_LENGTH instead of SCM_STRING_CHARS and
309 SCM_STRING_LENGTH.
310
311 * extensions.c (load_extension): Convert lib and init to locale
312 strings instead of accessing the internals directly.
313 (scm_c_load_extension): Use scm_from_locale_string instead of
314 scm_makfrom0str.
315
316 * fports.h, fports.c (scm_i_fdes_to_port): New, like
317 scm_fdes_to_port, but take mode bits directly instead of as a C
318 string.
319 (scm_i_fdes_to_port): Implement using above.
320 (scm_open_file): Use scm_i_fdes_to_port together with
321 scm_i_mode_bits to avoid accessing internals of SCM string from C.
322 * vports.c (scm_make_soft_port): Use scm_i_fdes_to_port together
323 with scm_i_mode_bits to avoid accessing internals of SCM string
324 from C.
325
326 * ports.h (scm_i_mode_bits): New, same as scm_mode_bits but with a
327 SCM string as argument.
328
329 * ports.c (scm_i_void_port): New, like scm_void_port but take mode
330 bits directly instead of C string.
331 (scm_void_port): Implement using above.
332 (scm_sys_make_void_port): Use scm_i_void_port together with
333 scm_i_mode_bits to avoid accessing internals of SCM string.
334
335 * strings.h, strings.c (scm_i_get_substring_spec): New.
336
337 * socket.c, rw.c, deprecated.h, validate.h
338 (SCM_VALIDATE_STRING_COPY): Deprecated. Replaced all uses with
339 SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
340 scm_to_locale_string, etc.
341 (SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated. Replaced as
342 above, plus scm_i_get_substring_spec.
343
344 * regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
345 hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
346 strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
347 SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
348 instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
349 SCM_STRING_LENGTH, respectively. Also, replaced scm_return_first
350 with more explicit scm_remember_upto_here_1, etc, or introduced
351 them in the first place.
352
353 * posix.c (WITH_STRING): New helper macro. Use it where one
354 locale string is needed for a short piece of code.
355 (STRING_SYSCALL): New helper macro. Use it instead of SCM_SYSCALL
356 when one locale string is needed.
357 (scm_mkstemp): Convert tmpl to a locale string.
358 (scm_putenv): Rewritten to use only C strings.
359 (scm_setlocale, scm_crpt): Convert argument strings to locale
360 strings.
361
3622004-08-11 Marius Vollmer <marius.vollmer@uni-dortmund.de>
363
364 * load.c (scm_primitive_load_path): Do not check for absolute
365 filenames when scm_sys_search_load_path returns false, which will
366 return absolute filenames unchanged.
367
bb26cc2d
MV
3682004-08-11 Marius Vollmer <mvo@zagadka.de>
369
370 * gc.c, procprop.c (scm_init_storage, scm_stand_in_procs,
371 scm_stand_in_proc): Use a hastable for scm_stand_in_procs instead
372 of an alist. Thanks to Matthias Koeppe!
373
02573e4c
MV
3742004-08-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
375
376 * strings.h, deprecated.h (SCM_STRING_COERCE_0TERMINATION_X):
377 Moved from string.h to deprecated.h.
378
379 * deprecated.c, deprecated.h (SCM_CHARS, SCM_LENGTH): Removed.
380
f9751e86 381 * strings.h, strings.c (SCM_MAKE_STRING_TAG): Renamed to
02573e4c
MV
382 SCM_I_MAKE_STRING_TAG, changed all uses.
383 (SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Renamed
384 to SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_LENGTH
385 respectively. For a short time, the old names are still there as
386 aliases. Not all uses have been changed yet, but the ones in
387 strings.c have.
388 (SCM_STRING_MAX_LEN): Do not hardcode to 24 bits, compute from
389 SCM_T_BITS_MAX.
390 (scm_is_string, scm_from_locale_string, scm_from_locale_stringn,
391 scm_take_locale_string, scm_take_locale_stringn,
392 scm_to_locale_string, scm_to_locale_stringn,
393 scm_to_locale_stringbuf): New.
394 (scm_c_string2str, scm_c_substring2str): Deprecated by moving to
395 deprecated.[hc]. Implemented in terms of the new functions above.
396 (scm_take_str, scm_take0str, scm_mem2string, scm_str2string,
397 scm_makfrom0str): Reimplemented in terms of the new functions from
398 above. They will be discouraged shortly.
399 (scm_substring): Do not use scm_mem2string.
400 (scm_i_allocate_string_pointers, scm_i_free_string_pointers): New,
401 to replace similar code from posix.c, simpos.c, and dynl.c.
402 (scm_string_append): Use memcpy instead of explicit loop. Do not
403 use register keyword. Use plain 'char' instead of 'unsigned
404 char'.
405
406 * strports.c (scm_mkstrport): Use SCM_I_STRING_UCHARS instead of
407 SCM_STRING_UCHARS. Use SCM_I_STRINGP instead of SCM_STRINGP.
408
409 * strop.c (scm_i_index): Replaced SCM_STRINGP, SCM_STRING_CHARS,
410 and SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
411 SCM_I_STRING_LENGTH, respectively. Pass string object directly,
412 not as a pointer. Use scm_remember_upto_here_1 to protect it.
413
414 * read.c (scm_input_error): Use a SCM value for 'fn', not a C
415 string. This avoids a conversion round-trip.
416
417 * gh_data.c: Replaced SCM_STRINGP, SCM_STRING_CHARS, and
418 SCM_STRING_LENGTH with SCM_I_STRINGP, SCM_I_STRING_CHARS, and
419 SCM_I_STRING_LENGTH, respectively.
420 (gh_scm2newstr): Implement in terms of scm_to_locale_string.
421
422 * environments.c: Instead calling scm_puts on the SCM_STRING_CHARS
423 of a string, call scm_display on the string itself.
424
425 * dynwind.c, dynwind.h (scm_frame_free): New.
426
427 * stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,
428 net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c:
429 Replaced uses of SCM_STRING_CHARS with proper uses of
430 scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string.
431 Replaced scm_mem2string with scm_from_locale_string.
432
433 * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c):
434 Removed, replaced all uses with scm_i_allocate_string_pointers.
435
436 * load.h, load.c (scm_internal_parse_path): Removed.
437 (scm_parse_path): Use scm_string_split to do the work.
438 (scm_init_load_path): Use scm_parse_path instead of
439 scm_internal_parse_path.
440 (scm_search_path): Rewritten string handling part of the code in
441 terms of scm_to_locale_stringbuf and so that it is thread safe.
442
443 * error.c (scm_error_scm): Throw directly instead of calling
444 scm_error, this avoids the back and forth conversion of SUBR and
445 MESSAGE and also plugs a memory leak.
446 (scm_error): Call scm_error_scm.
447
448 * backtrace.c: Replaced SCM_STRINGP with scm_is_string.
449 (display_header): Print FNAME when it is true, not
450 merely when it is a string.
451
452 * strings.h (SCM_SET_STRING_LENGTH, SCM_SET_STRING_CHARS): Removed
453 unceremoniously. They were unused by Guile itself, and external
454 use should stop immediately.
455
456
409eb4e5
MV
4572004-08-10 Marius Vollmer <mvo@zagadka.de>
458
459 * numbers.h, number.c, deprecated.h, deprecated.c (scm_round,
460 scm_truncate): Renamed to scm_c_round and scm_c_truncate;
461 deprecated versions installed in deprecated.h and deprecated.c.
462 Changed all uses.
463
a00eaf19
RB
4642004-08-06 Rob Browning <rlb@defaultvalue.org>
465
466 * net_db.c (scm_resolv_error): don't cause an exception while
467 trying to throw an exception -- call scm_misc_error with correct
468 arguments. The previous arguments needed a format escape that
469 wasn't in any of the format strings.
470
bcb88c93
KR
4712004-08-06 Kevin Ryde <user42@zip.com.au>
472
8f094b97
KR
473 * ramap.c (scm_array_fill_x): For byvect char fill, force signed char
474 so as not to depend on signedness of plain char. For byvect range
475 check, throw out-of-range rather than wrong-type-arg.
476
bcb88c93
KR
477 * unif.c (scm_uniform_vector_ref, scm_array_set_x): For byvect, force
478 signed byte range checks by using scm_to_schar and scm_from_schar,
479 don't want to depend on signedness of C char.
480
29e61124
KR
4812004-08-05 Kevin Ryde <user42@zip.com.au>
482
483 * arbiters.c (scm_try_arbiter): Use scm_i_misc_mutex instead of
484 SCM_DEFER_INTS.
485 (scm_release_arbiter): Use scm_i_misc_mutex so return value can be
486 guaranteed if multiple threads compete to unlock.
487 Update docstrings per doc/ref/api-scheduling.texi.
488
99de794f
KR
489 * filesys.c (scm_copy_file): Use fstat on the input fd rather than
490 stat on the filename, to be certain a file rename can't mean we get
491 info on one filesystem object but open another. This fstat usage is
492 similar to Emacs copy-file.
493
29e61124
KR
494 * posix.c (scm_setgroups): Enhance docstring, per doc/ref/posix.texi.
495
496 * simpos.c (scm_system_star): Change scm_from_long to scm_from_int on
497 SIGINT and SIGQUIT, since those values are ints.
498
759aa8f9
MV
4992004-08-03 Marius Vollmer <marius.vollmer@uni-dortmund.de>
500
7241f213
MV
501 * num2integral.i.c, num2float.i.c: Removed.
502 * Makefile.am (noinst_HEADERS): Updated.
503
f9656a9f
MV
504 * numbers.h. numbers.c (scm_make_ratio): Renamed to
505 scm_i_make_ratio and made static, replaced uses with scm_divide.
96d8c217
MV
506 (scm_complex_p): New, export as "complex?" to Scheme.
507 (scm_number_p): Export as "number?" to Scheme.
508 (scm_is_complex, scm_is_number): New.
509 (scm_c_make_rectangular, scm_c_make_polar): New.
510 (scm_make_rectangular, scm_make_polar): Use above.
511 (scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
512 New.
513 (scm_make_complex): Discouraged by moving to discouraged.h and
514 discouraged.c. Replaced all uses with scm_c_make_rectangular.
515
759aa8f9
MV
516 * discouraged.h, discouraged.c, numbers.c, numbers.h
517 (scm_is_rational): New.
518 (scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
519 scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
520 Removed prototypes.
521 (scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
522 Discouraged by moving to discouraged.h and discouraged.c.
523 Replaced all uses with scm_from_double.
524 (scm_num2float, scm_num2double): Discouraged by moving prototype
525 to discouraged.h and rewriting in terms of scm_to_double.
526 Replaced all uses with scm_to_double.
527 (scm_to_double): Do not implement in terms of scm_num2dbl, use
528 explicit code.
529 (scm_from_double): Do not implement in terms of scm_make_real, use
530 explicit code.
531
531bf3e6
MV
5322004-08-02 Marius Vollmer <marius.vollmer@uni-dortmund.de>
533
759aa8f9
MV
534 * init.c (scm_init_guile_1): Call scm_i_init_discouraged.
535
531bf3e6
MV
536 * gen-scmconfig.h.in (SCM_I_GSC_ENABLE_DISCOURAGED): New.
537 * gen-scmconfig.c (SCM_ENABLE_DISCOURAGED): Emit based on above.
538
539 * eval.c (SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR):
540 Renamed to SCM_I_* in order to avoid collisions with the versions
541 defined in deprecated.h.
542
543 * discouraged.h, discouraged.c: New files.
544
545 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
546 SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
547 deprecated to being discouraged by moving to discouraged.h.
548
549 * numbers.h, numbers.c, discouraged.h, discouraged.c
550 (scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
551 scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
552 scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
553 scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
554 scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
555 scm_num2ulong_long): Discouraged by moving to discouraged.h and
556 discouraged.c and reimplementing in terms of scm_from_* and
557 scm_to_*. Changed all uses to the new scm_from_* and scm_to_*
558 functions.
559
560 * numbers.h, numbers.c: Removed GUILE_DEBUG code.
561 (scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
562 scm_i_size2big, scm_i_ptrdiff2big): Removed.
563 (scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
564 * conv-integer.i.c, conv-uinteger.i.c: Use them instead of
565 explicit code.
566
5ec82e96
KR
5672004-08-02 Kevin Ryde <user42@zip.com.au>
568
569 * __scm.h (SCM_DEFER_INTS, SCM_ALLOW_INTS): Add comments about past
570 and current usage and migration.
571
58f28989
KR
5722004-07-31 Kevin Ryde <user42@zip.com.au>
573
574 * error.c (scm_strerror): Use scm_i_misc_mutex around strerror since
575 it's not thread safe.
576 (scm_syserror): Use scm_strerror rather than SCM_I_STRERROR, to take
577 advantage of this.
578 * fports.c (scm_open_file): Use scm_strerror likewise.
579 * filesys.c (scm_stat, scm_lstat): Ditto.
580
581 * filesys.c (scm_copy_file): Avoid fd leak when destination file
582 cannot be opened.
583
584 * symbols.c (scm_gensym): Use scm_i_misc_mutex around gensym_counter
585 update, for thread safety.
586 (gensym_counter): Move into scm_gensym which is its only user.
587 (scm_init_symbols): No need to explicitly initialize gensym_counter.
588
03696aab
MV
5892004-07-29 Marius Vollmer <marius.vollmer@uni-dortmund.de>
590
51fdb325
MV
591 * numbers.h (scm_to_schar, scm_to_uchar, scm_to_char,
592 scm_to_short, scm_to_ushort, scm_to_int, scm_to_uint, scm_to_long,
593 scm_to_ulong, scm_to_long_long, scm_to_ulong_long, scm_to_intmax,
594 scm_to_uintmax, scm_to_size_t, scm_to_ssize_t scm_from_schar,
595 scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
596 scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
597 scm_from_long_long, scm_from_ulong_long, scm_from_intmax,
598 scm_from_uintmax, scm_from_size_t, scm_from_ssize_t): No longer
599 defined in terms of scm_to_signed_integer, etc, but in terms of
600 scm_to_int8, etc.
601
602 * gen-scmconfig.c (SCM_SIZEOF_INTMAX, SCM_SIZEOF_SIZE_T): New.
603
03696aab
MV
604 * gen-scmconfig.h.in: Removed SCM_I_GSC_*_LIMITS macros, they are
605 no longer used.
606
607 * __scm.h (SCM_I_UTYPE_MAX, SCM_I_TYPE_MAX, SCM_I_TYPE_MIN,
608 SCM_I_SIZE_MAX, SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX): New.
609
610 * __scm.h, gen-scmconfig.c (SCM_I_LLONG_MAX, SCM_I_LLONG_MIN,
611 SCM_I_ULLONG_MAX, SCM_T_INT8_MIN, SCM_T_INT8_MAX, SCM_T_UINT8_MAX,
612 SCM_T_INT16_MIN, SCM_T_INT16_MAX, SCM_T_UINT16_MAX,
613 SCM_T_INT32_MIN, SCM_T_INT32_MAX, SCM_T_UINT32_MAX,
614 SCM_T_INT64_MIN, SCM_T_INT64_MAX, SCM_T_UINT64_MAX,
615 SCM_T_INTMAX_MIN, SCM_T_INTMAX_MAX, SCM_T_UINTMAX_MAX): Moved
616 definition into __scm.h, using new SCM_I_TYPE_MIN, etc.
617
618 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
619 the functions below.
620
621 * Makefile.am (noinst_HEADERS): Added conv-integer.i.c and
622 conv-uinteger.i.c.
623
624 * numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
625 scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
626 scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
627 scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
628 scm_from_uint64): Turned from macros into proper functions.
629 (scm_to_signed_integer, scm_to_unsigned_integer,
630 scm_from_signed_integer, scm_from_unsigned_integer): Generate via
631 conv-integer.i.c and conv-uinteger.i.c, as well.
632
633 * number.h (scm_to_ssize_t, scm_to_size_t): Use the new
634 SCM_I_SSIZE_MIN, SCM_I_SSIZE_MAX, and SCM_I_SIZE_MAX macros for
635 the limits. Those are always defined.
636
1f15779e
KR
6372004-07-29 Kevin Ryde <user42@zip.com.au>
638
639 * posix.c (scm_ttyname): Use scm_i_misc_mutex for thread safety.
640
48360eb3
KR
6412004-07-28 Kevin Ryde <user42@zip.com.au>
642
643 * posix.c (scm_ctermid): Use an L_ctermid buf on the stack, for thread
644 safety.
645
c3f3c841
KR
646 * unif.c (scm_array_set_x): For svect, use scm_num2short for
647 consistency with other vector types and to get arg and func name into
648 error message.
649
c82f8ed6
MV
6502004-07-27 Marius Vollmer <marius.vollmer@uni-dortmund.de>
651
652 * deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_BOOL):
653 Reimplement using scm_is_false, scm_is_true, scm_is_bool, and
654 scm_from_bool, respectively.
655 (SCM_NINUMP): Added.
656
657 * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
658 deprecated.h. Replaced all uses with scm_is_eq.
659
317b4c4a
KR
6602004-07-24 Kevin Ryde <user42@zip.com.au>
661
662 * threads.c, threads.h (scm_i_misc_mutex): New SCM_GLOBAL_MUTEX.
663 * posix.c (scm_crypt): Use it to protect static data in crypt().
664
e11e83f3
MV
6652004-07-23 Marius Vollmer <marius.vollmer@uni-dortmund.de>
666
667 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
c82f8ed6 668 SCM_INUM): Deprecated by renaming them to SCM_I_INUMP,
e11e83f3
MV
669 SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated
670 versions to deprecated.h and deprecated.c. Changed all uses to
671 either use the SCM_I_ variants or scm_is_*, scm_to_*, or
672 scm_from_*, as appropriate.
673
674 * dynwind.c (scm_i_dowinds): Removed unused code that would call
675 the unexisting scm_cross_dynwind_binding_scope for inums on the
676 windlist.
677
a55c2b68
MV
6782004-07-10 Marius Vollmer <marius.vollmer@uni-dortmund.de>
679
680 * socket.c (ipv6_net_to_num, scm_from_ipv6): Renamed
e11e83f3 681 ipv6_net_to_num to scm_from_ipv6, for converting from an IPv6
a55c2b68
MV
682 byte-wise address to a SCM integer. Changed all uses.
683 (ipv6_num_to_net, scm_to_ipv6): Renamed ipv6_num_to_net to
684 scm_to_ipv6 and added type and range checking, for converting from
685 an IPv& byte-wise address to a SCM integer. Changed all uses.
686 (bignum_in_ipv6_range_p, VALIDATE_INET6): Removed, their function
687 is now done by scm_to_ipv6.
688
689 * numbers.c (scm_to_signed_integer, scm_to_unsigned_integer): dot
690 not accept inexact integers.
691
692 * validate.h, deprecated.h (SCM_VALIDATE_INUM,
693 SCM_VALIDATE_INUM_COPY, SCM_VALIDATE_BIGINT,
694 SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY,
695 SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
696 SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
697 SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
698 fixnum/bignum distinction visible. Changed all uses to
699 scm_to_size_t or similar.
700
7012004-07-09 Marius Vollmer <marius.vollmer@uni-dortmund.de>
702
703 * cpp_cnvt.awk: Use scm_from_int instead of SCM_MAKINUM.
704
48a06bd5
KR
7052004-07-10 Kevin Ryde <user42@zip.com.au>
706
707 * hash.c (scm_hashq, scm_hashv, scm_hash): Restrict to size>=1 rather
708 than size>=0, since 0<=hash<size cannot be satisfied for size==0, and
709 such a size causes divide-by-zeros in scm_hasher.
710
052fbfd9
KR
711 * regex-posix.c (scm_make_regexp): Free rx on error, to avoid memory
712 leak.
713
43240c9c
MV
7142004-07-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
715
716 * numbers.c (scm_is_signed_integer, scm_is_unsigned_integer):
717 Rewritten using the same logic as scm_to_signed_integer and
718 scm_to_unsigned_integer, respectively, which is better(tm). Also,
719 use CHAR_BIT instead of hardcoding 8.
720 (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
721 SCM_I_LLONG_MIN etc. instead.
722
723 * numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
724 SCM_I_MAKINUM and changed all uses.
725 * deprecated.h, deprecated.c (SCM_MAKINUM): Newly deprecated.
726
a3de8e7b
MV
727 * gen-scmconfig.c (SCM_I_LLONG_MIN, SCM_I_LLONG_MAX,
728 SCM_I_ULLONG_MAX): Instead of hard-coding the numbers, compute
43240c9c
MV
729 them by assuming twos-complement.
730
c9eb03bb
MV
7312004-07-07 Marius Vollmer <marius.vollmer@uni-dortmund.de>
732
733 * gen-scmconfig.h.in: Added all the new SCM_I_GSC_*_LIMITS that
734 configure now produces.
735 * gen-scmconfig.c: Use them to output SCM_T_INT8_MIN, etc
736 definitions, giving the limits of the integer types defined by
737 Guile. Also, output a hard coded SCM_I_LLONG_MIN, etc since
738 LLONG_MIN or LONG_LONG_MIN is hard to get at.
739
740 * numbers.h (scm_to_short, scm_to_ushort): It's SHRT_MIN, etc, not
741 SHORT_MIN.
742 (scm_to_size_t): Use SIZE_MAX instead of cooking our own.
743 (scm_to_long_long, scm_to_ulong_long, scm_to_int8, scm_to_uint8,
744 scm_to_int16, scm_to_uint16, scm_to_int32, scm_to_uint32,
745 scm_to_int64, scm_to_uint64, scm_to_intmax, scm_to_uintmax,
746 scm_from_long_long, scm_from_ulong_long, scm_from_int8,
747 scm_from_uint8, scm_from_int16, scm_from_uint16, scm_from_int32,
748 scm_from_uint32, scm_from_int64, scm_from_uint64, scm_from_intmax,
749 scm_from_uintmax): New.
750
7888309b
MV
7512004-07-06 Marius Vollmer <marius.vollmer@uni-dortmund.de>
752
753 * tags.h (scm_is_eq): New.
754
755 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
756 SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into
757 "deprecated.h". Replaced all uses with scm_is_false, scm_is_true,
758 scm_from_bool, and scm_is_bool, respectively.
759
760 * boolean.h (scm_is_bool): Fix bug in prototype.
761 (scm_from_bool): The argument is "x" not "f", stupid.
762
763 * boolean.c (scm_is_bool): Fix typo.
764
765 * numbers.h, numbers.c (scm_is_integer, scm_is_signed_integer,
766 scm_is_unsigned_integer, scm_to_signed_integer,
767 scm_to_unsigned_integer, scm_to_schar, scm_to_uchar, scm_to_char,
768 scm_to_short, scm_to_ushort, scm_to_long, scm_to_ulong,
769 scm_to_size_t, scm_to_ssize_t, scm_from_schar, scm_from_uchar,
770 scm_from_char, scm_from_short, scm_from_ushort, scm_from_int,
771 scm_from_uint, scm_from_long, scm_from_ulong, scm_from_size_t,
772 scm_from_ssize_t, scm_is_real, scm_to_double, scm_from_double):
773 New.
774
800570a6
MV
7752004-07-05 Marius Vollmer <marius.vollmer@uni-dortmund.de>
776
777 * boolean.h, boolean.c (scm_is_true, scm_is_false, scm_from_bool,
778 scm_to_bool): New.
779
9fcf3cbb
DH
7802004-06-27 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
781
782 * backtrace.c (display_expression, display_frame): Call
783 scm_i_unmemoize_expr for unmemoizing a memoized object holding a
784 single memoized expression.
785
786 * debug.c (memoized_print): Don't try to unmemoize the memoized
787 object, since we can't know whether it holds a single expression
788 or a body.
789
790 (scm_mem_to_proc): Removed check for lambda expression, since it
791 was moot anyway. Whoever uses these functions for debugging
792 purposes should know what they do: Creating invalid memoized code
793 will cause crashes, independent of whether this check is present
794 or not.
795
796 (scm_proc_to_mem): Take the closure's code as it is and don't
797 append a SCM_IM_LAMBDA isym. To allow easier debugging, the
798 memoized code should not be modified.
799
800 * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed
801 scm_unmemoize from public use, but made scm_i_unmemoize_expr
802 available as a guile internal function instead. However,
803 scm_i_unmemoize_expr will only work on memoized objects that hold
804 a single memoized expression. It won't work with bodies.
805
806 * debug.c (scm_procedure_source), macros.c (macro_print), print.c
807 (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body,
808 i. e. a list of expressions.
809
810 * eval.c (unmemoize_exprs): Drop internal body markers from the
811 output during unmemoization.
812
813 * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr,
814 scm_i_unmemocopy_body): Removed scm_unmemocopy from public use,
815 but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available
816 as guile internal functions instead. scm_i_unmemoize_expr will
817 only work on a single memoized expression, while
818 scm_i_unmemocopy_body will only work on bodies.
819
90df793f
DH
8202004-06-21 Dirk Herrmann <dirk@dirk-herrmanns-seiten.de>
821
822 * eval.c (unmemoize_exprs): Handle semi-memoized code.
823
824 (scm_cons_source, scm_primitive_eval): Prefer higher level
825 predicate SCM_FALSEP over SCM_IMP.
826
8048c00b
RB
8272004-06-15 Rob Browning <rlb@defaultvalue.org>
828
829 * script.c (scm_shell_usage): minor phrasing change.
830
831 * gc_os_dep.c: update ifdefery for macosx.
832 (scm_get_stack_base): separate result initialization from
833 declaration to slience warnings with macosx and hp-ux using gcc
834