Optimize 'string-hash'.
[bpt/guile.git] / libguile / ChangeLog-1996-1999
CommitLineData
339999c7
GB
11999-12-28 Gary Houston <ghouston@arglist.com>
2
3 * posix.c (scm_waitpid): move the HAVE_WAITPID test out of the
4 procedure body, so that the procedure is left undefined if waitpid
5 is not available. previously in this case the procedure was
6 defined but would raise a system-error when called, which is
7 pointless. I intend to make the same change for other procedures
8 and deprecate SCM_SYSMISSING and scm_sysmissing.
9
101999-12-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
11
12 * feature.c (s_scm_add_hook_x): Call scm_wrong_type_arg instead of
13 scm_misc_error when add-hook! is passed a procedure of wring
14 arity. (Thanks to Greg Harvey.)
15
161999-12-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
17
18 * macros.c (scm_make_synt): Use scm_make_subr_opt to make the
19 transformer subr. (Thanks to Bill Schottstaedt.)
20
211999-12-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
22
23 * objects.c (scm_class_of): Bugfix: Inserted missing SCM_CDR
24 setting struct table class.
25
26Sun Dec 19 10:22:34 1999 Greg J. Badros <gjb@cs.washington.edu>
27
28 * threads.c, mit-pthreads.c, list.c, coop.c: Remove K&R
29 prototypes; just use ANSI C prototypes. I'm not sure how
30 mit-pthreads.c ever compiled -- it still doesn't for me, but the
31 normal make procedure does not try to build it anyway (even
32 --with-threads I get the other threads code building) so I'm not
33 too worried about it.
34
35Sat Dec 18 16:58:34 1999 Greg J. Badros <gjb@cs.washington.edu>
36
37 * tags.h (SCM_CONSP, SCM_NCONSP): Define these in terms of
38 SCM_SLOPPY_CONSP and SCM_SLOPPY_NCONSP. (SCM_CONSP) Define this
39 in terms of SCM_SLOPPY_NCONSP instead of repeating the
40 expression.
41
42 * symbols.h (SCM_SLOPPY_SUBSTRP, SCM_SUBSTRP): Added former, and
43 define latter in terms of sloppy variant.
44
45 * strings.h (SCM_SLOPPY_STRINGP, SCM_STRINGP): Added former, and
46 define latter in terms of sloppy variant.
47
48 * scm_validate.h (SCM_MAKE_VALIDATE): Added this macro to factor
49 out the commonality of the various basic SCM_VALIDATE_foop
50 macros. Use SCM_MAKE_VALIDATE macro where possible. Fix
51 SCM_VALIDATE_INT_COPY to not use scm_num2ulong -- that does
52 coercion to an integer which is more advanced than desired and
53 SCM_NUM2ULONG provides that functionality. Use SCM_ASSERT_RANGE
54 appropriately for the various _MIN, _MAX, _RANGE macros. Drop
55 some superfluous "SCM_NIMP &&" where possible. Eliminate obsoleted
56 SCM_VALIDATE_NIMCONS (SCM_VALIDATE_CONS now does the NIMP test as
57 part of its SCM_CONSP test).
58
59 * socket.c, ports.c, pairs.c, list.c, lang.c, async.c: Use
60 SCM_VALIDATE_CONS, not obsoleted SCM_VALIDATE_NIMCONS.
61
62Sat Dec 18 15:33:05 1999 Greg J. Badros <gjb@cs.washington.edu>
63
64 * dynl.c: Added #include "scm_validate.h"
65
66Sat Dec 18 15:22:10 1999 Greg J. Badros <gjb@cs.washington.edu>
67
68 * alist.c, chars.c, dynl.c, net_db.c, numbers.c, unif.c: Use
69 SCM_NUM2ULONG instead of scm_num2ulong; SCM_NUM2LONG instead of
70 scm_num2long; SCM_WTA instead of scm_wta. Only done for when
71 FUNC_NAME was used as an argument of the macro and the formal
72 argument name was the explicit argument in the old function call.
73 These were just missed in my first pass of changes.
74
751999-12-18 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
76
77 * guile-doc-snarf.in (filename): Strip path to source dir before
78 touching the .x-files.
79
801999-12-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
81
82 * debug.c (scm_reverse_lookup): Bugfix: Reinserted SCM_NIMP.
83
84 * eval.c (SCM_CEVAL): Removed check for unbound slot in
85 SCM_IM_SLOT_REF. (This is now handled in a smarter way in GOOPS.)
86
871999-12-17 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
88
89 * tags.h (SCM_SLOPPY_NCONSP, SCM_SLOPPY_CONSP): New macros.
90 (SCM_ECONSP): Version which doesn't mix && and || without
91 parenthesis.
92 (SCM_NECONSP): Bugfree version.
93
94Fri Dec 17 12:09:11 1999 Greg J. Badros <gjb@cs.washington.edu>
95
96 * tags.h (SCM_ECONSP, SCM_NECONSP): Fix these macros to have the
97 SCM_NIMP test integrated into an || clause that I'd missed before
98 and was causing a segfault in the regression tests.
99
100 * symbols.h (SCM_ROUCHARS): Make cast be to (unsigned char *), not
101 (char *); fixes a problem reported by the regression test
102 ports.test.
103
104 * ports.c: Fixed a couple of arg/number mismatches in
105 SCM_VALIDATE_ macros.
106
107 Now passes the (not-comprehensive) guile-modules test-suite again!
108
109Thu Dec 16 12:41:22 1999 Greg J. Badros <gjb@cs.washington.edu>
110
111 * coop-threads.c: Remove K&R function headers.
112
113 * scm_validate.h: Added SCM_VALIDATE_THREAD.
114
115 * *.c: Remove SCM_NIMP(X) when it is an extraneous pre-test given
116 that SCM_FOOP macros all now include SCM_NIMP in their expansion.
117 This simplifies lots of code, making it far more readable.
118
119Wed Dec 15 19:45:14 1999 Greg J. Badros <gjb@cs.washington.edu>
120
121 * *.h: Use SCM_NIMP(X) && in all the FOOP macros.
122
123 * *.[ch]: Use do { ... } while (0) idiom in macros that expanded
124 to a bare block.
125
126Tue Dec 14 10:53:14 1999 Greg J. Badros <gjb@cs.washington.edu>
127
128 * snarf.h: Put SCM_PROC and SCM_PROC1 back in for
129 backward-compatibility of packages that use Guile. Internally
130 Guile should not use them, though. (Maybe enforce this with a new
131 -DBUILDING_GUILE compile-time flag?).
132
133Tue Dec 14 09:41:01 1999 Greg J. Badros <gjb@cs.washington.edu>
134
135 * backtrace.c (scm_set_print_params_x): Renamed from
136 set_print_params_x.
137
138 * guile-doc-snarf.in: Use guile-snarf.awk, not
139 guile-doc-snarf.awk. Pass the basename of $filename
140
141 * load.h: Added prototypes for scm_sys_library_dir,
142 scm_sys_site_dir.
143
144 * load.c (scm_sys_library_dir, scm_sys_site_dir): Added these
145 functions, and took out the old scm_library_dir, scm_site_dir,
146 scm_pkgdata_dir. Now the primitives are %package-data-dir
147 (already existed), %library-dir, and %site-dir.
148
149 * debug.c: Use SCM_MISC_ERROR when possible instead of using
150 s_scm_* in a scm_misc_error() call.
151
152 * Makefile.am: Use guile-snarf.awk, not guile-doc-snarf.awk. Make
153 using guile-doc-snarf send stdout to $@ to create the .x file like
154 guile-snarf does.
155
156 * guile-snarf.awk.in: Added.
157
158 * guile-doc-snarf.awk.in: Removed (sorry to back out a recent
159 commit; if we're going to switch to guile-snarf I figure it makes
160 sense to get this right now-- I'd already had the change in my
161 working copy when the below commit happened).
162
1631999-12-14 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
164
165 * guile-doc-snarf.awk: Removed.
166
167 * guile-doc-snarf.awk.in: Added.
168
169 * ports.c (s_scm_pt_member): Fixed validation.
170
171 * guile-doc-snarf.in (filename): Use basename in order to strip
172 away path.
173
174 * debug.c (scm_make_iloc, s_scm_proc_to_mem): Added missing
175 semicolon.
176 (scm_memcons, scm_memcons, mem_to_proc): Renamed function name
177 strings to new form.
178
179 * backtrace.c (set_print_params_x): Fixed GUILE_PROC macro.
180
181 * tags.h (SCM_UNBOUND): New iflag which is needed for some time to
182 mark the unboundness of a GOOPS slot. (Added now in order to
183 correct a oversight. Should probably be removed again and
184 replaced with SCM_UNDEFINED when the corresponding code in GOOPS
185 is rewritten.)
186
187 * print.c (scm_isymnames): Added printed representation for
188 SCM_UNBOUND.
189
190 * eval.c (SCM_CEVAL): Bugfix: Added check for unbound slot in
191 SCM_IM_SLOT_REF.
192
193Mon Dec 13 17:23:22 1999 Greg J. Badros <gjb@cs.washington.edu>
194
195 * strings.c: Fixed mistaken default value in
196 scm_make_shared_substring; thanks Eric Moore!
197
198Mon Dec 13 16:29:13 1999 Greg J. Badros <gjb@cs.washington.edu>
199
200 * guile-doc-snarf.awk: Use sub instead of gsub in ^ anchored
201 replacement for docstrings. Fixes problem Ryan Yeske observed
202 with using mawk on his system. Thanks Ryan!
203
204Mon Dec 13 13:30:06 1999 Greg J. Badros <gjb@cs.washington.edu>
205
206 * guile-doc-snarf.in: Do not echo to stdout since the output now
207 gets stuck directly in the files instead of redirected from
208 stdout.
209
210 * guile-doc-snarf.awk: Escape a literal ) -- thanks Ryan
211 Yeske. Use print instead of printf to prime the .x file since
212 AIX's cpp has problems with #include-ing empty files (according to
213 the old guile-snarf.in file).
214
215Sun Dec 12 19:39:00 1999 Greg J. Badros <gjb@cs.washington.edu>
216
217 * Makefile.am: Fix ETAGS_ARGS to recognize GUILE_PROC,
218 GUILE_PROC1. Build guile-procedures.txt, and add that file to
219 pkgdata_DATA.
220
221 * load.c: Added `pkgdata-dir', `site-dir', `library-dir'
222 primitives.
223
224 * guile-doc-snarf.awk: Drop trailing space when no arguments:
225 e.g., "(foo )" is now "(foo)".
226
227 * *.c, alist.c: moved all the documentation for primitives from
228 guile-doc/ref/{appendices,posix,scheme}.texi into the source code.
229 This leaves about half of the primitives undocumented. Also, all
230 the markup is currently still texinfo. I don't have a problem
231 with texinfo per se, but the markup is not very descriptive or
232 accurate.
233
234Sun Dec 12 16:50:26 1999 Greg J. Badros <gjb@cs.washington.edu>
235
236 * scm_validate.h: Drop the SCM_DOCSTRING_SNARF for turning off
237 SCM_VALIDATE macros; the SCM_VALIDATE macros should be checked for
238 argument mismatches (along with the FUNC_NAME macro checking) by a
239 static tool that runs directly over the .c files.
240
241 * snarf.h: Handle SCM_REGISTER_PROC better when snarfing. The
242 docstring is still missing from the .doc file; it just gives the
243 name of the C function that gets called instead.
244
245 * guile-doc-snarf.awk: Be sure to touch the output files to help
246 make out. Also handle SCM_REGISTER_PROC better, and change the
247 output format slightly.
248
249Sun Dec 12 15:33:40 1999 Greg J. Badros <gjb@cs.washington.edu>
250
251 * snarf.h: Drop SCM_PROC, SCM_PROC1. Added extra output for
252 guile-doc-snarf script.
253
254 * guile-doc-snarf.in, guile-doc-snarf.awk: New, simple doc
255 extraction system. Builds foo.x, foo.doc from foo.{c,cc}.
256 There are dependencies between these files and snarf.h. This
257 replaces guile-snarf.
258
259 * guile-snarf.in: Drop everything after $$$ for the new snarf.h
260 macros. This is obsoleted by guile-doc-snarf, but kept here for
261 now for good measure.
262
263 * Makefile.am: Added guile-doc-snarf, guile-doc-snarf.awk to
264 bin_SCRIPTS. Added .doc to SUFFIXES, and give rule for creating
265 .doc files to use guile-doc-snarf. Update the rule for creating
266 .x files to use guile-doc-snarf.
267
268Sun Dec 12 12:31:38 1999 Greg J. Badros <gjb@cs.washington.edu>
269
270 * *.c: Finish replacing K&R style prototypes with ANSI C
271 prototypes.
272
273 * eval.c: Make scm_m_mody's 3rd argument be a const char *, not a
274 char *. ANSI prototypes caught this.
275
276 * strorder.c: Use GUILE_PROC1 for the couple SCM_PROC1 expansions
277 that I missed.
278
279 * scm_validate.h: Use SCM_BOOLP for validating bools. Do not
280 expand macros if SCM_DOCSTRING_SNARF.
281
282Sun Dec 12 11:23:22 1999 Greg J. Badros <gjb@cs.washington.edu>
283
284 * *.c, srcprop.h: Use SCM_BOOL(f) instead of (f? SCM_BOOL_T:
285 SCM_BOOL_F) and use SCM_NEGATE_BOOL(f) instead of (f? SCM_BOOL_F:
286 SCM_BOOL_T).
287
288Sun Dec 12 11:08:51 1999 Greg J. Badros <gjb@cs.washington.edu>
289
290 * boolean.h: Added SCM_BOOL, SCM_NEGATE_BOOL, SCM_BOOLP to here,
291 from scm_validate.h.
292
293 * scm_validate.h: Moved above out into boolean.h, fix typo in
294 SCM_VALIDATE_NIM macro.
295
296Sun Dec 12 10:29:12 1999 Greg J. Badros <gjb@cs.washington.edu>
297
298 * *.c, scm_validate.h: Use SCM_VALIDATE_NIM, not SCM_VALIDATE_NIMP
299 (none of the other validate macros have the trailing P).
300
301Sun Dec 12 10:07:29 1999 Greg J. Badros <gjb@cs.washington.edu>
302
303 * scm_validate.h: Added the FSF copyright to the top.
304
305 * strings.c: Use SCM_ASSERT_RANGE in a couple of places instead of
306 SCM_ASSERT w/ SCM_OUT_OF_RANGE.
307
308Sat Dec 11 18:34:12 1999 Greg J. Badros <gjb@cs.washington.edu>
309
310 * Makefile.am: Added scm_validate.h to modinclude_HEADERS.
311
312 * *.c: Pervasive software-engineering-motivated rewrite of
313 function headers and argument checking. Switched SCM_PROC,
314 SCM_PROC1 macros to be GUILE_PROC, GUILE_PROC1 (may change names
315 later, but was useful to keep old versions around while migrate)
316 that has docstrings and argument lists embedded in the GUILE_PROC
317 macro invocations that expand into a function header. Use lots of
318 new SCM_VALIDATE_* macros to simplify error checking and reduce
319 tons of redundancy. This is very similar to what I did for Scwm.
320
321 Note that none of the extraction of the docstrings, nor software
322 engineering checks of Scwm is yet added to Guile. I'll work on
323 that tomorrow, I expect.
324
325 * chars.c: Added docstrings for the primitives defined in here.
326
327 * snarf.h: Added GUILE_PROC, GUILE_PROC1. Added
328 SCM_REGISTER_PROC to be like old SCM_PROC, though old SCM_PROC
329 still remains for now. Changed naming convention for the s_foo
330 string name of the primitive to be s_scm_foo for ease of use with
331 the macro.
332
333 * scm_validate.h: Lots of new SCM_VALIDATE macros to simplify
334 argument checking through guile. Maybe some of these should be
335 folded into the header file for the types they check, but for now
336 it was easiest to just stick them all in one place.
337
3381999-12-10 Greg Harvey <Greg.Harvey@thezone.net> (applied --12/10/99 gjb)
339
340 * smob.c (scm_smob_prehistory): initialize allocated smob
341
342 * tags.h: new tag: scm_tc16_allocated
343
344 * gc.c (scm_gc_for_newcell): set the car of the new cell
345 to scm_tc16_allocated
346 * pairs.h (SCM_NEWCELL): set the car to scm_tc16_allocated
347 (scm_gc_mark): mark allocated cells.
348
3491999-12-09 Greg J. Badros <gjb@cs.washington.edu>
350
351 * strports.h, strports.c (scm_eval_0str): Fix constness. Some
352 thanks to Dirk Hermann.
353
354 * gh_eval.c (gh_eval_str, gh_eval_file, gh_eval_str_with_catch,
355 gh_eval_str_with_standard_handler,
356 gh_eval_str_with_stack_saving_handler): Fix constness. Some
357 thanks to Dirk Hermann.
358
359 * gh_data.c (gh_str02scm): Fix constness.
360
361 * gh.h: Fix constness of prototypes for the above.
362
363 * vectors.c: Include "unif.h" to avoid a warning about missing
364 prototype for scm_uniform_element_size().
365
3661999-12-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
367
368 * vectors.c (scm_vector_length, scm_vector_ref, scm_vector_set_x):
369 Turned into primitive generics.
370
3711999-12-04 Gary Houston <ghouston@freewire.co.uk>
372
373 * ports.c (scm_port_closed_p): new procedure, implements
374 "port-closed?" suggested by Bernard Urban.
375 ports.h: added prototype, removed the SCM_P macros.
376
3771999-11-30 Gary Houston <ghouston@freewire.co.uk>
378
379 * unif.h: added some comments, removed the SCM_P macros.
380
3811999-11-29 Gary Houston <ghouston@freewire.co.uk>
382
383 * vports.c (sf_write): use scm_makfromstr, not scm_makfrom0str
384 (thanks to Daniel Skarda).
385
3861999-11-22 Jim Blandy <jimb@savonarola.red-bean.com>
387
388 * gscm.c, gscm.h: Deleted. They were unused.
389
3901999-11-20 Gary Houston <ghouston@freewire.co.uk>
391
392 * unif.c (scm_list_to_uniform_array): call
393 scm_dimensions_to_uniform_array with a third argument of
394 SCM_UNDEFINED instead of SCM_EOL.
395
3961999-11-19 Gary Houston <ghouston@freewire.co.uk>
397
398 * the following changes allow guile to be built with the array
399 "module" omitted. some of this stuff is just tc7 type support,
400 which wouldn't be needed if uniform array types were converted
401 to smobs.
402
403 * tag.c (scm_utag_bvect ... scm_utag_cvect): don't define unless
404 HAVE_ARRAYS.
405 (scm_tag): don't check array types unless HAVE_ARRAYS.
406
407 * sort.c (scm_restricted_vector_sort_x, scm_sorted_p):
408 remove the unused array types.
409 * (scm_stable_sort, scm_sort): don't support vectors if not
410 HAVE_ARRAYS. a bit excessive.
411
412 * random.c (vector_scale, vector_sum_squares,
413 scm_random_solid_sphere_x, scm_random_hollow_sphere_x,
414 scm_random_normal_vector_x): don't define unless HAVE_ARRAYS.
415
416 * gh_data.c (makvect, gh_chars2byvect, gh_shorts2svect,
417 gh_longs2ivect, gh_ulongs2uvect, gh_floats2fvect, gh_doubles2dvect,
418 gh_uniform_vector_length, gh_uniform_vector_ref):
419 don't define unless HAVE_ARRAYS.
420 (gh_scm2chars, gh_scm2shorts, gh_scm2longs, gh_scm2floats,
421 gh_scm2doubles):
422 don't check vector types if not HAVE_ARRAYS.
423
424 * eq.c (scm_equal_p), eval.c (SCM_CEVAL), print.c (scm_iprin1),
425 gc.c (scm_gc_mark, scm_gc_sweep), objects.c (scm_class_of):
426 don't support the array types unless HAVE_ARRAYS is defined.
427
428 * tags.h: make nine tc7 types conditional on HAVE_ARRAYS.
429
430 * read.c (scm_lreadr): don't check for #* unless HAVE_ARRAYS is
431 defined (this should use read-hash-extend).
432
433 * ramap.c, unif.c: don't check whether ARRAYS is defined.
434
435 * vectors.c (scm_vector_set_length_x): moved here from unif.c. call
436 scm_uniform_element_size if HAVE_ARRAYS.
437 vectors.h: prototype too.
438
439 * unif.c (scm_uniform_element_size): new procedure.
440
441 * init.c (scm_boot_guile_1): don't call scm_init_ramap or
442 scm_init_unif unless HAVE_ARRAYS is defined.
443
444 * __scm.h: don't define ARRAYS.
445
446 * Makefile.am (EXTRA_libguile_la_SOURCES): unif.c and ramap.c
447 moved here from libguile_la_SOURCES.
448
4491999-11-18 Gary Houston <ghouston@freewire.co.uk>
450
451 * socket.c (scm_htons, scm_ntohs, scm_htonl, scm_ntohl): new
452 functions for network data conversion.
453
454 * numbers.c (scm_num2long, scm_num2longlong):
455 throw out-of-range instead of wrong-type-arg if appropriate.
456 (scm_iint2str): handle -2^31 correctly.
457 (scm_num2long): handle -2^31 bignum correctly.
458 (scm_num2long_long): rewrite the bigdig case: basically copied
459 from scm_num2long.
460 numbers.h: (SCM_BITSPERLONGLONG): deleted.
461
462 * unif.c (rapr1): use sprintf instead of intprint for unsigned
463 longs: intprint can't cope with large values.
464
465 * numbers.c (scm_num2ulong): check more consistently that the
466 input is not negative. if it is, throw out-of-range instead of
467 wrong-type-arg.
468
469 * ramap.c (scm_array_fill_int): don't limit fill to INUM for
470 uvect, ivect or llvect.
471 Check that fill doesn't overflow short uniform array.
472
473 * __scm.h: add another long to the definition of long_long and
474 ulong_long.
475
476 * unif.c (scm_raprin1): use 'l' instead of "long_long" in the
477 print representation of llvect. read can't handle more than
478 one character.
479 (scm_dimensions_to_uniform_array): make "fill" an optional argument
480 instead of a rest argument.
481
482 * tags.h (scm_tc7_llvect): wasn't defined anywhere, so use the free
483 tag 29 for now.
484
485 * __scm.h: don't mention LONGLONGS.
486
487 * unif.c, numbers.c, eq.c, gc.c, print.c, eval.c, ramap.c:
488 replace LONGLONGS with HAVE_LONG_LONGS as set by configure.
489
4901999-11-17 Gary Houston <ghouston@freewire.co.uk>
491
492 * net_db.c (scm_inet_aton): throw errors using the misc-error key
493 instead of system-error. inet_aton doesn't set errno.
494 system-error isn't right in gethost either, since it's throwing
495 the value of h_errno instead of errno. so:
496 (scm_host_not_found_key, scm_try_again_key,
497 scm_no_recovery_key, scm_no_data_key): new error keys.
498 (scm_resolv_error): new procedure, use the new keys.
499 (scm_gethost): call scm_resolv_error not scm_syserror_msg.
500
5011999-11-16 Gary Houston <ghouston@freewire.co.uk>
502
503 * error.c: (various): use scm_cons instead of scm_listify
504 to build short lists.
505
5061999-11-03 Gary Houston <ghouston@freewire.co.uk>
507
508 * socket.c (scm_fill_sockaddr): zero the address structure before
509 use, in case it has a sin_len field and the OS doesn't like random
510 values (thanks to Bertrand Petit).
511
5121999-10-26 Mark Galassi <rosalia@lanl.gov>
513
514 * gh.h, gh_data.c (gh_symbol2scm): changed gh_symbol2scm() to take
515 a const char * argument, upon suggestion from Lynn Winebarger.
516
5171999-10-26 Gary Houston <ghouston@freewire.co.uk>
518
519 * strports.c (st_end_input): avoid dubious pointer arithmetic.
520
5211999-10-24 Gary Houston <ghouston@freewire.co.uk>
522
523 * Move the responsibility for resetting port buffers from the
524 caller of the ptob seek procedure to the implementation. This
525 gives more control in general to the ptob seek: in particular the
526 change of 1999-10-20 can be made to work without breaking seek on
527 string ports. There's a comment in NEWS about upgrading port
528 types.
529
530 * ports.c (scm_seek): don't reset the port buffers here.
531
532 * fports.c (fport_seek): reset the buffers, except for the
533 0 SEEK_CUR case.
534
535 * strports.c (st_end_input): (bug fix): decrement pt->read_pos by
536 offset. check that it's not less than read_buf.
537 (st_seek): reset the buffers first, unless it's the 0 SEEK_CUR
538 case and currently reading.
539
5401999-10-20 Gary Houston <ghouston@freewire.co.uk>
541
542 * ports.c (scm_seek): Add a special case for SEEK_CUR, offset 0,
543 so that unread chars are not needlessly discarded. (thanks to
544 Roland Orre).
545
5461999-10-18 Gary Houston <ghouston@freewire.co.uk>
547
548 * fports.c (scm_fdes_to_port): always set rw_random if the fdes is
549 random access. rw_active needs to be maintained even for single
550 directional ports, otherwise scm_seek and probably other things are
551 broken. (thanks to Roland Orre).
552
553 * strports.c (scm_mkstrport): set rw_random to 1 unconditionally.
554
555 * ports.c (scm_add_to_port_table): initialise rw_random to 0.
556
557 * ports.h (scm_port): change the comments on rw_random and rw_active.
558
5591999-10-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
560
561 * ioext.c: Added #include "feature.h".
562
563 These changes turns `delay' into a memoizing macro. This is
564 because it may be expanded before evaluation if it occurs at the
565 beginning of a body. (Thanks to Lauri Alanko.)
566
567 * eval.c, eval.h (scm_sym_delay): New global symbol.
568
569 * tags.h (SCM_IM_DELAY): New immediate symbol.
570
571 * print.c (scm_isymnames): Printed representation.
572
573 * eval.c (unmemocopy, SCM_CEVAL): Handle SCM_IM_DELAY.
574 (scm_m_delay): Turned into a memoizing macro.
575
576 * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version.
577
5781999-10-11 Jim Blandy <jimb@savonarola.red-bean.com>
579
580 * gh_data.c (gh_ints2scm, gh_doubles2scm): Make sure elements are
581 protected from GC while building the vector. (Thanks to Bernard
582 Urban and Greg Harvey.)
583
5841999-10-08 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
585
586 * throw.c (handler_message): Display backtrace if backtraces
587 enabled.
588
5891999-10-05 Jim Blandy <jimb@savonarola.red-bean.com>
590
591 * Makefile.in, scmconfig.h.in: Deleted from CVS repository. Run
592 the autogen.sh script to create generated files like these.
593
594 * numbers.c (scm_string_to_number): Signal an error if radix is
595 less than two. (Thanks to Jorgen Schaefer.)
596
597 * print.c (scm_write, scm_display, scm_newline, scm_write_char):
598 Don't assume that the current output port is valid. Somebody
599 might close it. (Thanks to Bernard Urban.)
600
6011999-10-02 Jim Blandy <jimb@zwingli.cygnus.com>
602
603 * scmconfig.h.in: Regenerated.
604
605 * Makefile.am (EXTRA_libguile_la_SOURCES): fix typo.
606
607Mon Sep 27 17:15:14 1999 Greg J. Badros <gjb@cs.washington.edu>
608
609 * __scm.h: Fix a bunch of macros that were missing do-while(0)
610 sandwiches.
611
612 * debug.c, eval.c: Fix buggy uses of SCM_ALLOW_INTS (missing
613 semicolon) exposed by the above change.
614
6151999-09-27 Greg J. Badros <gjb@cs.washington.edu>
616
617 * stacks.c: Avoid compiler warning re: unitialized var.
618
619 * scmconfig.h.in: Added DEBUG_FREELIST
620
621 * pairs.h: Fix macro that was not do-while(0) sandwiched.
622
623 * gc.h, gc.c: Added scm_gc_set_debug_check_freelist_x,
624 scm_map_free_list
625
6261999-09-23 Gary Houston <ghouston@freewire.co.uk>
627
628 * ioext.c (scm_init_ioext): enable "i/o-extensions" feature here
629 instead of in scm_init_filesys.
630
631 * init.c (scm_boot_guile_1): don't call scm_init_posix or
632 scm_init_filesys unless HAVE_POSIX is defined.
633 don't call scm_init_netdb or scm_init_socket unless
634 HAVE_NETWORKING is defined.
635
636 * Makefile.am (EXTRA_libguile_la_SOURCES): filesys.c, posix.c,
637 net_db.c, socket.c: moved here from libguile_la_SOURCES.
638
6391999-09-25 Jim Blandy <jimb@savonarola.red-bean.com>
640
641 * root.c (scm_make_root): Initialize all the fields of the new
642 root. GC could happen any time, you know. (Thanks to Greg
643 Harvey.)
644
645 * numbers.c (scm_number_to_string): Signal an error if radix is
646 less than two. (Thanks to Jorgen Schaefer.)
647
648 * Makefile.am (EXTRA_libguile_la_SOURCES): Add memmove.c here,
649 so automake will actually generate rules for it.
650 * Makefile.in: Regenerated.
651
6521999-09-21 Jim Blandy <jimb@savonarola.red-bean.com>
653
654 * backtrace.c: #include "_scm.h" before testing whether
655 HAVE_UNISTD_H is #defined.
656
6571999-09-20 Jim Blandy <jimb@savonarola.red-bean.com>
658
659 * read.c (scm_read): Don't assume that scm_cur_inp is always open.
660 * ports.c (scm_read_char): Same.
661 * ioext.c (scm_read_line): Same.
662 (Thanks to Bernard Urban.)
663
6641999-09-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
665
666 * vectors.c (scm_vector_move_right_x): Bugfix: Remove side effect
667 in SCM_ASSERT macro.
668 numbers.c: Removed #ifndef SCM_RECKLESS at places where type
669 checking may invoke a generic. (Thanks to Michael Livshin.)
670
671 * __scm.h (SCM_WTA_DISPATCH_0, SCM_GASSERT0): New macros.
672
673 * numbers.c (scm_max, scm_min, scm_sum, scm_difference,
674 scm_product, scm_divide): Bugfix: Don't pass SCM_UNDEFINED to the
675 generic function if the asubr is called with only one arg.
676
6771999-09-20 Gary Houston <ghouston@freewire.co.uk>
678
679 * scmsigs.c (scm_sigaction): add SA_RESTART to flags only if
680 HAVE_RESTARTABLE_SYSCALLS.
681 (scm_init_scmsigs): use siginterrupt if it's available. not
682 everyone who has restartable syscalls has SA_RESTART it seems.
683
684 (scm_sigaction): use scm_num2long/scm_long2num when converting
685 SIG_DFL/SIG_IGN, in case it doesn't fit in an INUM. use
686 scm_integer_p to test the type.
687
6881999-09-18 Gary Houston <ghouston@freewire.co.uk>
689
690 * _scm.h, scmsigs.c: replace HAVE_RESTARTS with
691 HAVE_RESTARTABLE_SYSCALLS.
692
693 * strports.c (scm_strport_to_string): create the string from
694 pt->read_buf instead of an expression that evaluates to the
695 same thing.
696
697 * gdbint.c (gdb_print): don't just use SCM_CHARS to get a C string
698 from the port: the port's buffer may not be NUL terminated.
699
7001999-09-16 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
701
702 * Makefile.am (.c.x): Added missing semicolon after `false'.
703
7041999-09-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
705
706 * print.c (scm_iprin1): Turn `write' and `display' into
707 primitive generics and use their associated generic functions in
708 scm_iprin1 for GOOPS objects.
709
710 * backtrace.c: #include <unistd.h> if present.
711
7121999-09-14 Jim Blandy <jimb@savonarola.red-bean.com>
713
714 * Makefile.am (.c.x): Don't create a subshell just to delete the
715 .x file and return false.
716 * Makefile.in: Regenerated.
717
7181999-09-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
719
720 * feature.c (scm_create_hook): New function. Replaces
721 scm_make_named_hook which is now deprecated.
722 (scm_make_hook_with_name): New primitive.
723 (print_hook): Hooks now print in a fancy way.
724
7251999-09-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
726
727 * __scm.h, backtrace.c, backtrace.h, debug.c, debug.h, dynl-dld.c,
728 dynwind.c, dynwind.h, eval.h, evalext.c, evalext.h, feature.c,
729 feature.h, hashtab.c, hashtab.h, objects.c, objects.h, print.c,
730 procs.c, procs.h, smob.c, smob.h, srcprop.c, strorder.c, struct.c,
731 struct.h: Updated copyright notices.
732
733 * srcprop.c (scm_source_property): Bugfix: Use SCM_NECONSP instead
734 of SCM_NCONSP. (Thanks to Greg Badros.)
735
736 * gsubr.c (scm_make_gsubr): Use scm_make_subr_opt for creation of
737 the self subr.
738
739 * eval.c, debug.h (SCM_BACKTRACE_WIDTH): New debug option: width.
740
741 * backtrace.c: Keep backtraces within specified width by
742 adaptively adjusting fancy printing parameters and cut output if
743 necessary.
744 (scm_display_application): Check args.
745
7461999-09-11 Jim Blandy <jimb@savonarola.red-bean.com>
747
748 Change the name of the objects returned by OPENDIR from
749 "directory" to "directory stream". A predicate named "directory?"
750 would be confusing.
751 * filesys.c (scm_directory_stream_p): Renamed from scm_directory_p.
752 At the Scheme level, "directory?" -> "directory-stream?".
753 (scm_dir_print): Use the phrase "directory stream" in printed form.
754 * filesys.h (scm_directory_stream_p): Prototype renamed
755 accordingly.
756
757 * Makefile.am (CLEANFILES): Remove versiondat.h; that should only
758 be removed by `make distclean', since it's generated by configure.
759 * Makefile.in: Regenerated.
760 (Thanks to Robert Bihlmeyer.)
761
762 * strop.c (scm_substring_move_x): Signal an error if start1
763 doesn't come before end1. (Thanks to Karoly Lorentey).
764
765 * numbers.c (scm_istr2flo): Don't call SCM_INEXP without first
766 calling SCM_NIMP. (Thanks to Karoly Lorentey).
767
768 * version.c (scm_libguile_config_stamp): Deleted. See
769 corresponding change to ../ice-9/boot-9.scm.
770 * versiondat.h.in: Remove definition for GUILE_STAMP.
771 * version.h: Delete prototype.
772 * Makefile.in: Regenerated.
773
7741999-09-11 Gary Houston <ghouston@easynet.co.uk>
775
776 * filesys.c (scm_directory_p): new procedure "directory?" Returns
777 a boolean indicating whether its argument is a directory
778 port as returned by opendir (thanks to Dirk Herrmann for the
779 suggestion.)
780
7811999-09-11 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
782
783 * backtrace.c (display_frame_expr): Don't print a newline.
784 (display_frame): Print the newline here instead.
785 (display_backtrace_body): Don't print "Backtrace:".
786 (scm_backtrace): Print "Backtrace:" here instead.
787
7881999-09-09 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
789
790 * procs.c (scm_setter): Signal WTA if handed an entity or operator
791 lacking a setter.
792
793 * feature.c, feature.h: (scm_hook_p, scm_hook_empty_p): New
794 primitives. (Thanks to Greg Badros);
795 (scm_hook_to_list): New primitive; Hooks are now smobs.
796
7971999-09-08 Gary Houston <ghouston@easynet.co.uk>
798
799 * stime.c (bdtime2c): rewrite the ASSERTs. Accept a value
800 of #f for the 10th vector element to avoid an exception
801 seen by Bernard Urban.
802 (scm_mktime): unneeded ASSERT removed.
803
8041999-09-07 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
805
806 * eval.c (scm_map, scm_for_each): Converted to dispatch on generic
807 if args don't match.
808
809 * __scm.h (SCM_WTA_DISPATCH_n, SCM_GASSERTn): New macros.
810
8111999-09-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
812
813 * numbers.c: Converted comparison operations to dispatch on
814 generic if args don't match.
815
816 * Makefile.am (ETAGS_ARGS): Added support for GPROC and GPROC1.
817
8181999-09-06 James Blandy <jimb@mule.m17n.org>
819
820 * guile-snarf.c: Deleted. Snarfing should respect CPP
821 conditionals, so it needs to actually run CPP. Bleah.
822
8231999-09-05 James Blandy <jimb@mule.m17n.org>
824
825 Handle errors properly in guile-snarf. (Thanks to Han-Wen Nienhuys.)
826 * guile-snarf.in: Be sure to exit with an error if CPP does.
827 * Makefile.am (.c.x): Delete the .x file and exit with an error
828 status if guile-snarf exits with an error status.
829 * Makefile.in: Regenerated.
830
831 * snarf.h (SCM_GLOBAL_KEYWORD): Call scm_c_make_keyword, not
832 scm_makekey, which doesn't exist any more. Guess nobody's using
833 this.
834
835 * guile-snarf.c: New implementation of guile-snarf, meant to be
836 more robust than the shell script. I think it's complete, but I
837 haven't tested it at all, and I haven't changed the build process
838 to actually use it. We should compare its output against that of
839 the existing shell script, for all source files.
840
841 * guile-snarf.c (parse_args): Abort if we haven't handled some
842 character type.
843
8441999-09-03 James Blandy <jimb@mule.m17n.org>
845
846 * load.c (scm_search_path): If the filename has any extension at
847 all, ignore the entire list of extensions. Also, don't check whether
848 the file is accessible. If the file exists, accessible or not, we
849 should return it. Inaccessible files should cause an error later.
850 (Thanks to Keisuke Nishida for the suggestions.)
851
8521999-09-02 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
853
854 * gc.c (cleanup, scm_init_storage): Use on_exit if present and
855 atexit not available. (sunos4.1.4 needs it.)
856
8571999-09-01 James Blandy <jimb@mule.m17n.org>
858
859 I take it all back --- bcopy does handle overlapping source and
860 destination areas correctly. At least on every system I could
861 find. But it is better to use AC_REPLACE_FUNCS than to introduce
862 new CPP conditionals.
863 * memmove.c: New file, implementing memmove in terms of bcopy.
864 * scmconfig.h.in: Regenerated.
865
866 Allocators should use the `void *' type for generic pointers.
867 * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Change
868 argument and return types.
869 * gc.h: Corresponding changes to prototypes.
870 (Thanks to Forcer.)
871
8721999-08-31 James Blandy <jimb@mule.m17n.org>
873
874 * numbers.c (scm_init_numbers): Claim to support the `complex'
875 feature, as expected by (ice-9 format). (Thanks to Ceri Storey.)
876
877 * Makefile.am (check-local): Set GUILE_LOAD_PATH so the tests can
878 find (ice-9 boot-9) when Guile was compiled in a separate
879 directory from the source. (Thanks to Rodney Brown.)
880 * Makefile.in: Regenerated.
881
882 * procs.c (scm_make_subr_opt): Fix typo. Remember to multiply
883 table lengths by the size of a single element when growing the
884 table. (Thanks to Bill Schottstaedt.)
885
8861999-08-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
887
888 * eval.c (SCM_CEVAL): Duplicated the method dispatch code at the
889 SCM_IM_DISPATCH form instead of calling scm_mcache_lookup_cmethod
890 since that cuts down the time for type dispatch by 50%.
891
8921999-08-30 James Blandy <jimb@mule.m17n.org>
893
894 * gh_data.c (gh_set_substr): Revert change of 1999-08-29; bcopy is
895 not a correct substitute for memmove, because it doesn't handle
896 overlapping source and destination areas on many platforms.
897 Overlaps are the primary reason to use memmove in the first place.
898 * ports.c (scm_ungetc): Same.
899 * strop.c (scm_substring_move_x): Same.
900
9011999-08-30 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
902
903 * gc.c (scm_init_storage): Skip registration of cleanup on systems
904 which lack atexit. (Is it important that cleanup is made
905 properly? Maybe we should replace all `exit' with `scm_exit' and
906 call cleanup there?)
907
908 * struct.c, struct.h (scm_struct_free_0, scm_struct_free_light,
909 scm_struct_free_standard, scm_struct_free_entity): Declared to
910 return scm_sizet instead of size_t.
911
912 * gdbint.c, strports.c: #include <unistd.h>. (SEEK_SET is defined
913 there on sunos4.1.4.)
914
9151999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
916
917 * numbers.c (scm_lcm): Bugfix: BIGDIG --> SCM_BIGDIG;
918 Account for the case when second argument is unbound.
919
920 * strorder.c (scm_string_less_p, scm_string_ci_less_p): Bugfix.
921 (Thanks to Karoly Lorentey.)
922
923 * gh_data.c, ports.c, strop.c: Alternatively use bcopy if memmove
924 isn't present. (Thanks to Suzuki Toshiya.)
925
926 * ports.c: Use ANSI C prototypes in definitions. (Thanks to
927 Bernard Urban.)
928
929 * filesys.c (scm_stat2scm): Conditionally use S_ISLNK. (Thanks to
930 Bernard Urban.)
931
932 * dynl-dl.c (RTLD_GLOBAL): Define if non-existent. (Thanks to
933 Bernard Urban and Ian Grant.)
934
935 * Makefile.am (libguile_la_LDFLAGS): Bumped libguile version
936 again. (1.3.4 will be binary incompatible with 1.3.2 because of a
937 change in the representation of entities and operators.)
938
9391999-08-29 Gary Houston <ghouston@easynet.co.uk>
940
941 * ports.c (scm_ungetc): bugfix: if putback_buf is NULL
942 don't allocate zero bytes (thanks to Bill Schottstaedt).
943
9441999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
945
946 * procs.c (scm_setter): Converted to use generic dispatch.
947
948 * eval.c, eval.h: Bugfix: scm_sym_apply was not initialized
949 correctly.
950
951 * load.c (scm_search_path): Don't try extensions which already are
952 present at the end of the filename.
953 (scm_init_load): Check .scm first. (Thanks to Keisuke Nishida.)
954
955 * stacks.c (scm_sym_apply): Removed. (Thanks to Ken Raeburn.)
956
957 Cleanup and simplification of generic method dispatch.
958 Also, the quadruple representation of entity and operator
959 procedures has been replaced with single.
960
961 * tags.h (SCM_IM_HASH_DISPATCH): Removed.
962
963 * print.c (scm_isymnames): Removed #@hash-dispatch.
964
965 * objects.c, objects.h (scm_mcache_lookup_cmethod): Moved here
966 from eval.c; Support 0 arity methods.
967 (scm_set_object_procedure_x): Removed scm_sym_atdispatch;
968 (scm_apply_generic_env): Removed.
969 Replaced slots proc0-3 with procedure.
970
971 * objects.h (SCM_OPERATOR_PROC_0, SCM_OPERATOR_PROC_1,
972 SCM_OPERATOR_PROC_2, SCM_OPERATOR_PROC_3): Replaced by
973 SCM_OPERATOR_PROCEDURE.
974 (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_1, SCM_ENTITY_PROC_2,
975 SCM_ENTITY_PROC_3): Replaced by SCM_ENTITY_PROCEDURE.
976
977 * struct.c, struct.h: Replace 4 procedure slots with one.
978 (scm_struct_i_procedure): Replaces scm_struct_i_procedure.
979
980 * gc.c (scm_gc_mark): Mark 1 procedure slot in entities instead of
981 4.
982
983 * eval.c (scm_sym_args): Removed.
984 (SCM_CEVAL): Simplified entity application.
985 Moved dispatch code to objects.c.
986
987 * procprop.c (scm_i_procedure_arity): Bugfix: Handle generics.
988
9891999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
990
991 * sort.c (closureless): Use scm_eval_body.
992
993 * eval.c (SCM_APPLY): Fixed serious evaluator bug: If a closure
994 with a symbol as last form was first called normally and then via
995 `map' or some other mechanism using primitive apply, an ILOC was
996 returned.
997
9981999-08-26 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
999
1000 This change extends the representation of primitive procedures
1001 with more data fields, e.g. a place for documentation and true
1002 procedure properties.
1003
1004 * procs.c, procs.h (scm_subr_entry): New type: Stores data
1005 associated with subrs.
1006 (SCM_SUBRNUM, SCM_SUBR_ENTRY, SCM_SUBR_GENERIC, SCM_SUBR_PROPS,
1007 SCM_SUBR_DOC): New macros.
1008 (scm_subr_table): New variable.
1009 (scm_mark_subr_table): New function.
1010
1011 * init.c (scm_boot_guile_1): Call scm_init_subr_table.
1012
1013 * gc.c (scm_gc_mark): Don't mark subr names here.
1014 (scm_igc): Call scm_mark_subr_table.
1015
1016
1017 This change implements a scheme for letting a generic work as a
1018 shadow for a primitive procedure. If the primitive procedure
1019 can't dispatch on its arguments, control is left over to the
1020 generic. Normal wrong type arg errors will be generated until the
1021 user has hung the first method on the primitive.
1022
1023 * snarf.h (SCM_GPROC, SCM_GPROC1): New macros.
1024
1025 * procs.c, procs.h (scm_subr_p): New function (used internally).
1026
1027 * gsubr.c, gsubr.h (scm_make_gsubr_with_generic): New function.
1028
1029 * objects.c, objects.h (scm_primitive_generic): New class.
1030
1031 * objects.h (SCM_CMETHOD_CODE, SCM_CMETHOD_ENV): New macros.
1032
1033 * print.c (scm_iprin1): Print primitive-generics.
1034
1035 * __scm.h (SCM_WTA_DISPATCH_1, SCM_GASSERT1,
1036 SCM_WTA_DISPATCH_2, SCM_GASSERT2): New macros.
1037
1038 * eval.c (SCM_CEVAL, SCM_APPLY): Replace scm_wta -->
1039 SCM_WTA_DISPATCH_1 for scm_cxr's (unary floating point
1040 primitives). NOTE: This means that it is now *required* to use
1041 SCM_GPROC1 when creating float scm_cxr's (float scm_cxr's is an
1042 obscured representation that will be removed in the future anyway,
1043 so backward compatibility is no problem here).
1044
1045 * numbers.c: Converted most numeric primitives (all but bit
1046 comparison operations and bit operations) to dispatch on generic
1047 if args don't match.
1048
1049
1050 Better support for applying generic functions.
1051
1052 * eval.c, eval.h (scm_eval_body): New function.
1053
1054 * objects.c (scm_call_generic_0, scm_call_generic_1,
1055 scm_call_generic_2, scm_call_generic_3, scm_apply_generic): New
1056 functions.
1057
1058
1059 Optimization of the generic function dispatch mechanism.
1060
1061 * eval.c (SCM_CEVAL): Apply the cmethod directly after having
1062 called scm_memoize_method instead of doing a second lookup.
1063
1064 * objects.h (scm_memoize_method): Now returns the memoized cmethod.
1065
1066
1067 Bugfix
1068
1069 * procs.c (scm_make_subr_opt): Use scm_sysintern0 instead of
1070 scm_sysintern so that the binding connected with the subr name
1071 isn't cleared when we give set = 0.
1072
1073
10741999-08-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1075
1076 More transparent handling of ports with print states.
1077
1078 * print.h (SCM_PORT_WITH_PS_P, SCM_PORT_WITH_PS_PORT,
1079 SCM_PORT_WITH_PS_PS): Represent ports with print states as a smob
1080 instead of a pair of a port and a print state. We'll need to cons
1081 once extra in scm_printer_apply but the type system will be
1082 cleaner, it will mix better with GOOPS, and, it will be even more
1083 transparent to the user.
1084
1085 * print.c (scm_get_print_state): New procedure: Given an output
1086 port, return the print state associated to it in the current print
1087 chain, if one exists;
1088 (scm_port_with_print_state): New procedure: Associate a
1089 print-state with a port.
1090 (scm_valid_oport_value_p): Use SCM_PORT_WITH_PS_P;
1091 (scm_printer_apply): Wrap port and pstate as a smob;
1092 (print_state_printer): Removed.
1093
1094 * objects.c (scm_class_of): Treat scm_tc16_port_with_ps as ports.
1095
1096 * eval.c (scm_init_eval): Use scm_make_smob_type instead of
1097 scm_newsmob.
1098
1099 * ports.c (scm_output_port_p): Bugfix: Coerce output port before
1100 testing (otherwise the port-print-state trick won't be transparent
1101 to the user; one example where this caused problems was in the
1102 (ice-9 format) module).
1103
11041999-08-23 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1105
1106 * eval.c (SCM_CEVAL): Let the SCM_IM_SLOT_SET_X form return
1107 SCM_UNSPECIFIED instead of the set value.
1108
11091999-08-20 James Blandy <jimb@mule.m17n.org>
1110
1111 * load.c (scm_init_load_path): Remove support for SCHEME_LOAD_PATH.
1112
1113 * ports.h (enum scm_port_rw_active): New enum, containing
1114 SCM_PORT_READ, SCM_PORT_WRITE, and SCM_PORT_NEITHER (instead of
1115 zero). The debugger knows about enums, but doesn't know about
1116 #defines.
1117 (typedef scm_port): Declare rw_active member to be an enum
1118 scm_port_rw_active.
1119 * fports.c (fport_flush, fport_end_input): Use SCM_PORT_NEITHER
1120 instead of zero.
1121 * ports.c (scm_add_to_port_table): Same.
1122 * strports.c (st_flush, st_end_input): Same.
1123
1124 * ioext.c (scm_do_read_line, scm_read_line): Use scm_must_malloc,
1125 scm_must_realloc, and scm_done_malloc as appropriate.
1126
11271999-08-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1128
1129 * sort.c (quicksort): Added condition to protect the algorithm
1130 from crashing the interpreter if the less predicate is buggy.
1131
11321999-08-19 Gary Houston <ghouston@easynet.co.uk>
1133
1134 * fports.c (fport_write): fix line-buffering mode again.
1135 (scm_open_file): recognise 'l' for line-buffering.
1136 (scm_setvbuf): recognise _IOLBF for line-buffering.
1137
11381999-08-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1139
1140 * Makefile.am (libguile_la_LDFLAGS): Increased the version number
1141 of libguile to 5.0.
1142
1143 * eval.c (SCM_APPLY), sort.c (closureless): Expand body when
1144 evaluating closures.
1145
11461999-08-18 Gary Houston <ghouston@easynet.co.uk>
1147
1148 * fports.c (fport_write): use memcpy instead of strncpy, in case
1149 the data contains NUL.
1150
11511999-08-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1152
1153 * gh.h (gh_vector_to_list): Bugfix. (Thanks to Frank Cieslok.)
1154
1155 * backtrace.c, debug.c, eval.c, eval.h, gsubr.c, procprop.h,
1156 read.c, srcprop.c, srcprop.h (scm_i_filename, scm_i_line,
1157 scm_i_column, scm_i_copy, scm_i_name, scm_i_lambda, scm_i_source,
1158 scm_i_more, scm_i_procname, scm_i_dot, scm_i_arrow, scm_i_else,
1159 scm_i_unquote, scm_i_uq_splicing, scm_i_apply, scm_i_enter_frame,
1160 scm_i_apply_frame, scm_i_exit_frame, scm_i_trace, scm_i_quote,
1161 scm_i_begin, scm_i_if, scm_i_and, scm_i_or, scm_i_case,
1162 scm_i_cond, scm_i_letstar, scm_i_do, scm_i_quasiquote,
1163 scm_i_define, scm_i_letrec, scm_i_let, scm_i_atapply,
1164 scm_i_atcall_cc, scm_i_breakpoint): Renamed: Consequently use
1165 scm_sym_ as prefix for symbols.
1166
1167 * debug.c (scm_i_proc, scm_i_args, scm_i_eval_args): Removed.
1168
1169 * eval.c, eval.h (scm_sym_begin, scm_sym_if, scm_sym_and,
1170 scm_sym_case, scm_sym_cond, scm_sym_letstar, scm_sym_do,
1171 scm_sym_define, scm_sym_letrec, scm_sym_atapply,
1172 scm_sym_atcall_cc): Made global.
1173
11741999-08-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1175
1176 * eval.c (scm_sym_args): Made global.
1177
1178 * objects.c (scm_set_object_procedure_x): Disallow setting of
1179 procedures for pure generic functions.
1180
11811999-08-12 Gary Houston <ghouston@easynet.co.uk>
1182
1183 * ports.c (scm_seek): one more: was scm_lseek. Also changed the
1184 Scheme name from lseek to seek, but lseek was added recently so
1185 it shouldn't be a big problem.
1186 * ports.c, gdbint.c, ioext.c: changed callers.
1187
11881999-08-11 Gary Houston <ghouston@easynet.co.uk>
1189
1190 * fports.c (fport_input_waiting): if select is used, return 1
1191 instead of whatever FD_ISSET expands to. maybe it will be useful
1192 to interpret the value from the input_waiting ptob procedure as a
1193 lower bound on the number of bytes available.
1194
1195 * Mikael asked for a few names to be changed...
1196
1197 * ports.c (scm_make_port_type): take the write procedure as the
1198 second argument instead of the flush procedure.
1199 * ports.h (scm_ptob_descriptor): rename the ptob procedures:
1200 fflush -> flush, read_flush -> end_input, fclose -> close,
1201 fill_buffer -> fill_input, ftruncate -> truncate,
1202 input_waiting_p -> input_waiting.
1203
1204 * ports.c (end_input_void_port): was read_flush_void_port.
1205 (scm_set_port_end_input): was scm_set_port_flush_input.
1206 (scm_set_port_flush): was scm_set_port_write.
1207 (scm_set_port_input_waiting): was scm_set_port_input_waiting_p
1208 (scm_end_input): was scm_read_flush.
1209 (scm_fill_input): was scm_fill_buffer.
1210 (scm_flush): was scm_fflush.
1211 * fports.c (fport_input_waiting): renamed from fport_input_waiting_p.
1212 (fport_end_input): was local_read_flush.
1213 (fport_flush): was local_fflush.
1214 (fport_close): was local_fclose.
1215 (fport_truncate): was local_ftruncate.
1216 (fport_seek): was local_seek.
1217 (fport_free): was local_free.
1218 (fport_fill_input): was fport_fill_buffer.
1219 * strports.c (st_end_input): was st_read_flush.
1220 (st_truncate): was st_ftruncate.
1221 * vports.c: (sf_flush): was sfflush.
1222 (sf_close): was sfclose.
1223 (sf_fill_input): was sf_fill_buffer.
1224
1225 * ports.c, fports.c, strports, vports.c, ioext.c, unif.c, filesys.c:
1226 change callers.
1227
12281999-08-06 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1229
1230 * eval.c (SCM_IM_DISPATCH): Rewrote dispatch protocol. Dispatch
1231 forms now contain the expressions to be dispatched upon instead of
1232 depending on a surrounding lambda or let; Generic function
1233 dispatch has been optimized; `apply' on a generic function now
1234 works a little bit strangely. It uses a trick so that the type
1235 dispatch code in SCM_CEVAL can be reused.
1236
1237 * objects.h, objects.c (scm_apply_generic_env): Added (used by
1238 apply).
1239 (scm_operator_p): Added.
1240 (scm_sym_atdispatch): Added.
1241 (scm_set_object_procedure_x): Modified to handle the new style
1242 generic functions.
1243 (scm_object_procedures): New debugging procedure.
1244
12451999-08-05 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1246
1247 * eval.c, eval.h (scm_sym_args): Added.
1248
1249 * objects.h (SCM_CLASSF_PURE_GENERIC): Added.
1250
1251 * feature.c, feature.h (scm_c_run_hook): Added.
1252
1253 * eval.c (SCM_CEVAL:SCM_IM_DISPATCH): Bugfix: Jump back to
1254 cdrxnoap and loopnoap instead of begin and loop.
1255
12561999-08-04 Gary Houston <ghouston@easynet.co.uk>
1257
1258 * ports.c (scm_putc, scm_puts),
1259 * unif.c (scm_uniform_array_write): use scm_lfwrite.
1260 * ports.c (scm_putc): change type of first argument from int to char.
1261
12621999-08-04 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1263
1264 * eval.c (SCM_CEVAL): Improvements to SCM_IM_DISPATCH and
1265 SCM_IM_HASH_DISPATCH.
1266
1267 * objects.h (SCM_CLASSF_GOOPS_VALID): Added.
1268 (scm_si_redfined, scm_si_hashsets): Moved.
1269
1270 * objects.c (scm_class_of): Use the new SCM_CLASSF_GOOPS_VALID
1271 flag which combines type and status info so that the class
1272 redefinition protocol has zero cost during normal execution.
1273
12741999-08-03 Gary Houston <ghouston@easynet.co.uk>
1275
1276 * ports.h (scm_ptob_descriptor): include a write procedure again.
1277 it's more efficient for unbuffered fports (e.g., sockets.)
1278
1279 * ports.c (scm_puts): use ptob->write.
1280 * vports.c (scm_make_sfptob): set write proc in ptob.
1281 * strports.c (scm_make_stptob): set write proc in ptob.
1282 * ports.c (write_void_port): new procedure.
1283 * vports.c (sf_write): new procedure.
1284 * ports.c (scm_lfwrite): use ptob->write.
1285 * strports.c (st_write): new procedure.
1286 * fports.c (fport_write): new procedure.
1287 (scm_make_fptob): set write in ptob to fport_write.
1288 * ports.h: prototype for scm_set_port_write.
1289 * ports.c (scm_make_port_type): initialise ptob write procedure.
1290 (scm_set_port_write): new proc.
1291
12921999-08-01 Jim Blandy <jimb@savonarola.red-bean.com>
1293
1294 * ports.c (scm_char_ready_p): Don't try to find PORT's ptab entry
1295 until we've verified that it is actually a port. (Thanks to
1296 Lorentey Karoly.)
1297
12981999-07-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1299
1300 * gc.c (scm_must_malloc, scm_must_realloc): Removed unnecessary
1301 code, particularly an unnecessary test (len != size, where len ==
1302 size). (Was this leftovers from debugging code, or have I missed
1303 something profound?)
1304
1305 * hashtab.c: Bugfix: Don't declare s_hash_fold without storage
1306 size. (Thanks to James Dean Palmer.)
1307
1308 * numbers.c (scm_makdbl): Bugfix: Initialize imaginary part.
1309 (Thanks to Lorentey Karoly.)
1310
13111999-07-30 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1312
1313 * eval.c (scm_m_expand_body): Use scm_cons_source.
1314
1315 * struct.c (scm_print_struct): Use vtable name.
1316
1317 * print.c (scm_init_print): Set name of print state type.
1318
1319 * stacks.c (scm_init_stacks): Set name of stack type.
1320
13211999-07-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1322
1323 * eval.c (SCM_CEVAL): Removed old implementation of internal
1324 define.
1325
1326 * gsubr.c, procprop.h (scm_i_inner_name): Removed.
1327
1328 * debug.c, debug.h (scm_reverse_lookup): Added.
1329 (scm_procedure_name): Use scm_reverse_lookup to lookup the name of
1330 internal procedure definitions; Don't use scm_i_inner_name.
1331
1332 * eval.c, tags.h, print.c (SCM_IM_SLOT_REF, SCM_IM_SLOT_SET_X):
1333 New isym operations.
1334
1335 * eval.h: Added prototypes for multi language support functions.
1336
1337 * eval.c (SCM_IM_DISPATCH, SCM_IM_HASH_DISPATCH): Don't use
1338 improper lists in the low-level representation, since that will
1339 cause a begin to be prepended at macro expansion.
1340
1341 * eval.c (scm_cons_source): Version of cons which copies source
1342 properties from an existing cell.
1343 (scm_copy_tree, SCM_CEVAL): Use scm_cons_source.
1344
1345 * debug.c (scm_procedure_source): Cons SCM_IM_LAMBDA onto
1346 procedure source before calling scm_unmemocopy instead of faking
1347 an environment.
1348
13491998-10-25 Marius Vollmer <mvo@zagadka.ping.de>
1350
1351 Ported `internal defines' fix from SCM. Original ChangeLog entry:
1352
1353 1998-07-09 Radey Shouman <radey@colorage.com>
1354
1355 * eval.c (ceval_1): Modifications to allow rewriting of interal
1356 DEFINE to LETREC: If an ISYM is evaluated in non-tail position the
1357 body of which it is the CAR is macro expanded by m_expand_body,
1358 which rewrites internal DEFINE.
1359
1360 (m_expand_body): Added.
1361
1362 (m_macroexp1): Added argument to control error checking:
1363 m_expand_body may speculatively expand forms in the wrong
1364 environments. Made argument number checks conditional on
1365 RECKLESS.
1366
1367 (m_body): Added, error checks bodies and inserts the ISYM tokens.
1368
1369 (m_lambda): (m_letstar): (m_letrec1): (m_letrec): (m_let): Now
1370 call m_body.
1371
1372 (m_cond): (m_case): (m_quote): Modified to avoid destructively
1373 changing their argument forms. Since m_expand_body
1374 speculatively macro expands forms the process must be
1375 reversible.
1376
1377 (m_ident_eqp): Fixed to use proper environment.
1378
1379 (renamed_ident): Added DEFER_INTS_EGC.
1380
1381 Added prototypes for static functions.
1382
1383 * eval.c
1384
1385 (undef_cell): New.
1386
1387 (scm_lookupcar1, scm_lookupcar): Added CHECK argument. When CHECK
1388 is false, do not produce an error for unbound variables, return a
1389 pointer to cell_undef instead.
1390
1391 (EVALCELLCAR, XEVALCAR): Call scm_lookupcar with check=1.
1392
1393 (scm_m_body): New.
1394
1395 (scm_m_cond, scm_m_case, scm_m_quote): Modified to avoid
1396 destructively changing their argument forms. Since m_expand_body
1397 speculatively macro expands forms the process must be reversible.
1398
1399 (scm_m_lambda): Use scm_m_body instead of bodycheck. Account for
1400 SCM_IM_LET introduced by named lets.
1401
1402 (scm_m_letstar): Use scm_m_body instead of bodycheck.
1403
1404 (scm_m_letrec1, scm_letrec): Split scm_letrec into scm_letrec1 and
1405 scm_letrec. scm_letrec1 does not check for a null binding and
1406 takes an additional argument to specify the ISYM of the body. Use
1407 scm_m_body instead of bodycheck.
1408
1409 (scm_m_let): Use scm_m_body instead of bodycheck.
1410
1411 (scm_m_expand_body, scm_macroexp): New.
1412
1413 (unmemocopy): Account for ISYMs introduced by scm_m_body.
1414
1415 (ceval, deval): Call scm_m_expand_body. Call scm_lookupcar with
1416 check=1. Throw error for internal defined that have not been
1417 rewritten by scm_m_expand_body.
1418
1419 * eval.h: Added prototypes for scm_m_expand_body and scm_macroexp.
1420 Removed prototype for SCM_APPLY.
1421
1422 * tags.h: Added extern declaration of scm_isymnames.
1423
14241999-07-27 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1425
1426 * Makefile.am (EXTRA_libguile_la_SOURCES): Added lang.c.
1427
1428 * lang.c: New file: Beginning of multi-language support.
1429
1430 * init.c (scm_boot_guile_1): Added call to scm_init_lang ().
1431
1432 * dynwind.c (scm_dowinds): Removed obsolete wind_key #f case.
1433 (scm_dynamic_wind): Added argument checking for the after guard so
1434 that we don't add garbage on the dynwind chain.
1435 (scm_swap_bindings): Added.
1436
1437 * tags.h, print.c (SCM_IM_NIL_COND, SCM_IM_NIL_IFY, SCM_IM_T_IFY,
1438 SCM_IM_0_COND, SCM_IM_0_IFY, SCM_IM_1_IFY), print.c
1439 (scm_isymnames): New isyms for multi-language support.
1440
1441 * eval.c (scm_nil, scm_t): New symbols.
1442 (nil-cond, nil-ify, t-ify, 0-cond, 0-ify, 1-ify): New special
1443 forms for multi-language support.
1444
14451999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1446
1447 * random.c, random.h (scm_c_default_rstate, scm_c_uniform32):
1448 Added.
1449 Renamed functions in the random function library interface
1450 from scm_i_XXX --> scm_c_XXX.
1451
14521999-07-25 Gary Houston <ghouston@easynet.co.uk>
1453
1454 * ports.c (scm_putc): fix line-buffering.
1455
14561999-07-25 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1457
1458 * ports.c, ports.h, fports.c, strports.c, vports.c: Renamed
1459 scm_set_ptob_XXX --> scm_set_port_XXX.
1460
14611999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1462
1463 * ports.c, ports.h (scm_make_port_type): New interface for
1464 creation of port types (replaces scm_newptob). Just as for the
1465 smobs, we need to separate the internal representation of smob
1466 types from the interface, so that we easily can add new fields and
1467 rearrange things without caring about backward compatibility.
1468 This change was forced by the need in GOOPS to create classes
1469 representing port types.
1470 (scm_set_ptob_mark, scm_set_ptob_free, scm_set_ptob_print,
1471 scm_set_ptob_equalp, scm_set_ptob_flush_input, scm_set_ptob_close,
1472 scm_set_ptob_seek, scm_set_ptob_truncate,
1473 scm_set_ptob_input_waiting_p): New setters.
1474 (scm_newptob): Rewritten to use scm_make_port_type. For backward
1475 compatibility.
1476 (scm_ptobs): Changed type scm_ptobfuns --> scm_ptob_descriptor.
1477 (scm_prinport): Removed.
1478 (scm_port_print): Added.
1479 (scm_print_port_mode): Added.
1480 (void_port_ptob, print_void_port, close_void_port, noop0):
1481 Removed. Removed #include "genio.h" Added #include "objects.h",
1482 #include "smobs.h"
1483
1484 * fports.c (prinfport): Moved code from ports.c.
1485 (local_free): Added.
1486 (scm_fptob): Removed. Instead use new interface.
1487 (scm_make_fptob): Added. (Need to create basic ports in a
1488 specific order in ports.c.)
1489
1490 * strports.c (scm_stptob, prinstpt, noop0): Removed
1491 (scm_make_stptob): Added.
1492
1493 * vports.c (scm_sfport, prinsfpt, sf_read_flush, noop0): Removed.
1494 (scm_make_sfport): Added.
1495
1496 * filesys.c (scm_dir_print): Don't use the port printing code.
1497 Instead provide specific directory printer.
1498
1499 * gc.c (scm_gc_sweep): Use value returned from scm_ptobs[].free.
1500
1501 * ioext.c (scm_redirect_port): Replaced scm_ptobfuns -->
1502 scm_ptob_descriptor.
1503
1504 * smob.c (scm_smob_print): Handle non-existing type name nicely.
1505 Removed #include "genio.h"
1506
1507 * objects.c (scm_make_port_classes): New function ptr.
1508
15091999-07-24 Gary Houston <ghouston@easynet.co.uk>
1510
1511 * gdbint.c (gdb_print, gdb_read): call scm_truncate_file.
1512
1513 * ports.c (scm_truncate_file): renamed from scm_ftruncate.
1514 allow the 1st argument to be a fdes or filename as well as a
1515 port (as in the filesys.c version).
1516
1517 * filesys.c (scm_truncate_file): removed.
1518
15191999-07-24 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
1520
1521 * readline.c, readline.h: Removed.
1522
1523 * objects.c, objects.h (scm_port_class): Added.
1524 (scm_class_of): Look up port class in scm_port_class.
1525 (SCM_IN_PCLASS_INDEX, SCM_OUT_PCLASS_INDEX,
1526 SCM_INOUT_PCLASS_INDEX): Added.
1527
1528
1529 * Makefile.am: Removed genio.c, genio.x.
1530
1531 * genio.c: Removed.
1532
15331999-07-23 Mikael Djurfeldt <mdj@mdj-pc.nada.kth.se>
1534
1535 * init.c: Make sure that scm_post_boot_init_modules is called only
1536 once. (Important when using a dumped image.; Thanks to Bernard
1537 Urban.)
1538
15391999-07-19 Jim Blandy <jimb@savonarola.red-bean.com>
1540
1541 * guardians.c (scm_guardian_zombify): Separate scanning for
1542 zombies from marking the pairs of the free list.
1543
1544 * guardians.c (scm_guardian_zombify): Don't set marks manually ---
1545 use the macros. (Thanks to Michael Livshin.)
1546
1547 * eval.c (scm_m_lambda): Let bodycheck check the body of the
1548 lambda. Let your sins be purified by the blood of the lambda.
1549 (Thanks to Eric Hanchrow.)
1550
1551 * net_db.c (h_errno): Don't declare this if it's #defined. Eew.
1552 (Thanks to Valdis Kletnieks.)
1553
1554