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