-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathPREHISTORY
2071 lines (2059 loc) · 81.2 KB
/
PREHISTORY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
This is the change log of the original version of S9fES.
See the HISTORY file for more recent changes.
2018-08-23
Fix: Null vector constant was unprotected from GC. (s9core.c)
2018-08-19
The S9 interpreter failed to recover from error conditions
because of a missing s9_reset() call. (s9.c)
Upgraded S9core to Mk IIIe. (s9core.*)
2018-08-18
Rolled back changes of 2018-07-22. INEXACT->EXACT of a real number
with a non-zero fractional part is an error. Use ROUND in combination
with INEXACT->EXACT if that is what you intend. (s9.c, s9.scm)
Removed ROUND primitive. (s9.c)
Removed REAL_ROUND() function (it's better done in Scheme). (s9core.c)
2018-08-01
Fix: -u command line option caused an infinite loop. (s9.c)
So nobody ever uses this option? :)
2018-07-22
INEXACT->EXACT now returns an integer even if its argument has
fractional digits, e.g. (inexact->exact 1.5) ==> 2. (s9.c)
2018-07-21
Strings returned by SYMBOL->STRING are now immutable, as specified
in R4RS, section 3.5. (s9.c)
Upgraded S9core to Mk IIId. (s9core.*)
Added s9_real_round() function. (s9core.*)
Made ROUND a primitive function. (s9.c)
2018-06-05
Fix: LOADing a file with any missing closing parentheses did not
cause an error. (Removed some left-over code from reader.)
2017-11-09
Merged Plan 9 patches by McKay Marston. Thanks!
Upgrade to S9core Mk IIIc. (s9core.*)
Changed S9core documentation format from PDF to ASCII. (s9core.txt)
2017-01-25
Made CSV:READ translate subsequent commas as empty fields, e.g.:
(csv:read)"",,"" ==> ("" "" ""). (ext/csv)
Added CSV:READ and CSV:WRITE help pages. (help/csv/)
2017-01-24
Added CSV (comma-separated values) extension containing CSV:READ
and CSV:WRITE primitives. (ext/csv/)
2016-12-06
Fix: S9SOS mis-computed the precedence order for multi-methods.
Patch supplied by David Person, thank you!
2016-11-30
Upgrade to S9core Mk III. (s9core.*)
s9_make_integer() will now return pre-allocated objects for some
common values (0, 1, 2, 10). (Thanks, David Person!)
Added type_tag() accessor.
2016-08-23
The LENGTH fix of 2014-12-06 got reverted somewhere along the way.
Re-fixed. (s9.c)
2016-08-05
Upgrade to S9core Mk II. (s9.c, s9*.h)
Added -e (eval) and -r (run) command line arguments. (s9.c)
2015-11-19
real_ceil(), real_floor(), real_trunc() could fail when being
passed an integer. Thanks, Alexander Shendi! (s9core.c)
2015-11-17
Added real_power() function to s9core, added EXPT primitive
(unused, though; the Scheme version is faster). (s9core.[ch])
2015-11-08
S9core: added the open_input_string(), close_input_string(),
and port_eof() functions. (s9core.[ch])
S9core: fixed some function types (mostly port-related), made
readc() and reject() functions (previously macros). (s9core.[ch])
Updated the S9core manual. (s9core.tr)
Fixed a potential GC leak in string_to_bignum(). (s9core.c)
2015-08-10
Fix: S9core: make_vector() overwrote unallocated memory. (s9core.c)
(This bug did *not* affect the S9 interpreter!)
2015-07-14
Made APROPOS find extension procedures. (contrib/)
2015-07-13
Adapted S9HELP to the new help folder structure. (prog/)
Renamed extension directories to reflect their names:
ext/unix --> ext/sys-unix, ext/plan9 --> ext/sys-plan9.
Modified install scripts for new help structure.
2015-07-12
Renamed NETWORK extension to NET-UNIX. (ext/unix/)
Moved portable procedures from ext/ to lib/.
Re-structured help folder: moved extension procedures to separate
directories. (help/)
Made HELP find only procedures of extensions that are actually
available. (contrib/)
2015-07-09
Added add_image_vars() function to S9core. (s9core.*)
Cleaned up S9 bignum <-> C int conversion. (ext/plan9/)
Fixed some bugs in sys_convD2M(). (ext/plan9/)
Added DIR structure to Plan 9 extension. (ext/plan9/)
2015-07-07
Imported Bakul Shah's Plan 9 extension. (ext/plan9/) Cool! Thanks!
Restructured the extensions directory:
* ext/ -- portable extensions (might even move to lib/)
* ext/unix, ext/plan9 -- OS-specific extensions
* ext/curses -- curses extension
2015-07-06
Fix: internal counters did not count trillions correctly. (s9core.c)
Thanks, Arun Srinivasan!
2015-07-01
Changed Plan 9 install procedure to allow for multi-platform
installation. (mkfile, util/)
Added *HOST-SYSTEM* to help pages. (help/)
2015-06-30
Added install target for Plan 9. (mkfile)
Fix: embedded newline in a string literal would not bump the line
counter. (s9.c) Thanks, David Person!
2015-06-29
Added *HOST-SYSTEM* variable. (s9.c)
Made HELP print without prompting on Plan 9. (contrib/)
Added Plan 9 installation procedure.
2015-06-28
Rewrote signal handling to use notify()/noted() on Plan 9. (s9.c)
-------------------------------------------------------------------------------
Interface change: S9core PRINT is now called PRINTS; see below.
-------------------------------------------------------------------------------
2015-06-27
Renamed print() function of S9core to prints(). Sorry about the
inconvenience; "print" is reserved in the Plan 9 C library.
Fixed some Plan 9 issues (signal handlers, function declarations,
mkfile). (s9.c, s9core.c)
C2HTML: fixed missing </B> after keyword at end of file. (contrib/)
2015-06-23
Removed TRACE help page and entry in *S9FES-PROCEDURES*.
Fix: added MACRO-EXPAND and MACRO-EXPAND-1 (had been removed
accidentally). (s9.c) Thanks, nullbuilt0! (reddit)
2015-06-18
Fix: (expt 0 r) ==> 0 for r > 0. (s9.scm)
Added regression tests. (util/)
2015-06-17
Fix: Added missing POSIX/XOPEN prelude to Unix extension (required
on Linux, Cygwin, etc). (ext/)
2015-06-15b
Extended magic ID length to 16 bytes. (S9core)
Included time stamp in magic ID. (s9.c)
Fixed (expt 0 r) where r is not integer. (s9.scm)
2015-06-15
General:
- Factored out the S9core, providing a library for
implementing dynamic languages. Discussed in s9core.pdf.
- Real number arithmetics are now a non-optional part of
the interpreter.
Policy changes:
- Images are preferred over source files on startup, i.e.
first all directories of *LIBRARY-PATH* are searched for
images, then all directories are searched for source files.
The old policy was to load the first image /or/ source
from the first directory containing either of those.
- Existing output files are silently overwritten by
the OPEN-OUTPUT-FILE, WITH-OUTPUT-TO-FILE, and
WITH-OUTPUT-FILE functions. Previous policy was to signal
an error.
- The S9:S9 procedure will be called last when initializing
extensions thereby allowing it to call procedures of
other extensions. (Previously, S9:S9 was called first.)
Additions:
- The *ARGUMENTS* variable binds to a list of strings
containing the command line arguments passed to the
/program/ (not to the interpreter), i.e. the ARGS in
"-f program args".
Command line options:
- The -f flag is now optional, i.e. "s9 -f file args" and
"s9 file args" do the same.
- The "-m size" flag has been split into "-k size" (vectors)
and "-n size" (nodes).
- "-u" is short for "-k 0 -n 0" (unlimited space).
- "-n" no longer means "do not load rc file".
Removals:
- S9 no longer loads an rc file (~/.s9fes/rc) on startup.
Use the image file and the (badly documented) S9:S9
procedure to do things on start-up.
- Dropped the "-t count" command line option. The five most
recently called procedures will print in error messages.
- Dropped "imprecise" digits ("#") from number format. Use
"5" instead, that's what it did anyway.
- Dropped the TRACE command.
- Dropped the DUMP-IMAGE procedure. (Use -d)
-------------------------------------------------------------------------------
S9core Refactoring
-------------------------------------------------------------------------------
2015-06-08
Fix: (lambda (x) ...) and (define (x) ...) would attempt to
macro-expand (x). Thanks, David Person!
Note: this still fails in (cond (x)). Rename X as a work-around.
2015-03-31
Added statistics functions: CDF, ERF, MEAN, MEDIAN, MODE, NDF,
QUARTILE, RANGE, STDDEV, VARIANCE. (lib/)
2015-03-13
Added constants (S_zero, ...) for frequently used bignum literals,
so we don't have to call make_integer() each time. (s9.c, s9-real.c)
2015-03-12
Fix: TRACE without arguments could core-dump on some machines. (s9.c)
Thanks, David Person!
Made real number division round its mantissa instead of truncating
it, e.g.: (/ 2 3) --> 0.66...67 instead of 0.66...66. Should improve
real number precision a bit. (s9-real.c) Suggested by David.
2015-03-10
Fix: These functions would not terminate for certain values due to
inappropriate real number comparison: EXP, LOG, COS, SIN, TAN, ATAN,
SQRT. Thanks to David Person for pointing this out! (s9-real.scm)
Introduced *EPSILON* constant representing the least real number
with a precise representation. (s9.c)
2014-12-16
Simplified print_symbol() procedure. (s9.c)
2014-12-13
Fixed ATAN function for negative arguments. (s9-real.scm)
Thanks again, David!
Added some #ifdefs to guess whether we are compiling on a
64-bit system. (s9.h)
2014-12-06
Fix: LENGTH would print garbage when reporting an improper list.
(s9.c) Thanks, David Person!
2014-11-26
Added new Plan 9 mkfile and straightened out the build process
on non-Unix systems. Thanks, Ray Lai!
2014-11-25
Modified util/libtest.sh to not include the Unix extension tests
when the Unix extension is not present.
2014-11-24
Fix: replaced atol() with internal version to work around Plan 9
atol()'s behavior (leading '0' means octal). (s9.c, s9-real.c)
2014-11-05
Fixed SPAWN-COMMAND help page. (ext/, help/)
2014-11-03
Fixed some warnings in util/rpp.c (not used outside of build).
2014-10-31
Fixed a few potential GC leaks. (s9.c, s9-real.c)
2014-08-08
Changed hash function. (s9.c)
2014-08-04
Fix: wrong magic number in 64-bit image check. (s9.c)
2014-08-03
Missing help link: REAL? (help/, util/)
2014-07-25
Fix: MAKE-MATCHER accidentally redefined CASE using an equivalent
but less efficient version. (lib/)
2014-07-21
Simplified LET* (s9.scm)
2014-07-18
Made LENGTH and LIST-TAIL use integers internally. (s9.c)
2014-07-17
Made the fatal error handler print "fatal " to stderr when running
in batch mode. (s9.c)
2014-07-16
Added the "99 bottles" example (using SYNTAX-RULES). (contrib/)
2014-07-12
Fix: STRING->SYMBOL, SYMBOL->STRING, STRING-APPEND and STRING-COPY
work on counted strings now. (s9.c)
Fixed embarassing crash when reporting type errors, introduced
four days ago when changing the primitive procedure representation.
(s9.c)
2014-07-11
Applied some small cosmetical fixes. (s9.c)
2014-07-10
Renamed symbols beginning with an underscore for increased
portability. (s9.c, s9.h, s9-real.c)
2014-07-09
Removed binary ID from magic header, added number of primitives
instead. (s9.c)
2014-07-08
Made the reader report the location where an delimited list
started. (s9.c)
Invented a new method for storing primitive procedures in images
in a way that cooperates well with ASLR and PIC. (s9.c)
2014-06-29
Made APROPOS (and ,a) return _all_ procedures, even those not
currently loaded. (contrib/)
Patch from http://github.com/barak/scheme9: intercept file read
errors when reading an image file. Thanks, Barak! (s9.c)
Added and documented EVAL procedure. (s9.c)
2014-06-27
Made EDOC source code a better example of EDOC.
(prog/edoc.scm.edoc)
2014-06-25
Removed S9E, the S9 Editor, because it was broken. (contrib/)
2014-05-30
Fixed some bogus warnings generated by Clang.
2014-01-11
Added clarifying coment in lookup(). (s9.c)
Fixed typo in man page. Thanks, Yi Dai (s9.1)
2013-11-26
Added ARGV primitive to core system. See below. (s9.c)
2013-11-24
Added ENVIRON and SYSTEM primitives to the core interpreter. (s9.c)
Mostly to use minimal S9 in web programming.
2013-04-10
Added a workaround for plan9's atol() function, which
interprets leading '0' as octal. Thanks, Bakul Shah! (s9.c)
2013-02-09
Fix: FORMAT-TIME emitted wrong month name with ~@m. Thanks,
Doug Currie! (ext/)
2013-01-22
Fix: S9E would abort when exiting from the [^L][e] prompt using
backspace. (contrib/)
2013-01-17
Added COLLECT procedure. (lib/)
2013-01-14
Fix: SYNTAX-RULES could abort while matching an ellipsis against
an atom. (lib/)
2013-01-09
S9E: Fixed highlighting of marked regions in side-scrolled lines.
(contrib/)
2013-01-02
Added experimental "hard" cutting (TRY/CUT) to AMK. (lib/)
Added the N-Queens program (using AMK). (contrib/)
2012-12-26
Added numeric goals to AMK. (lib/)
2012-12-22
More changes to AMK for compatibility with the upcoming version
of the book. (lib/)
2012-12-20
Made AMK always return () or (()) when no variable was given
in RUN*. (lib/)
2012-12-17
Added color customization to S9E. (contrib/)
2012-12-12
Cleaned up AMK, made it more compatible with the book. (lib/)
Fix: REM-PROP reversed its property list argument. (lib/)
2012-12-10
Finished S9E, the new S9 Editor with integrated REPL buffer.
(contrib/)
2012-12-05
Made DEFINE-MACRO an alias of DEFINE-SYNTAX. (s9.c)
2012-12-02
Fix: GENSYM had a potential race condition resulting in a wrong
prefix. (s9.c)
Checked for similar race conditions due to string/vector pool
compaction; seems clean.
2012-11-30
Fix: SUBSTRING had a GC race condition, which could result in
the extraction of garbage. (s9.c)
2012-11-27
Added SRFI-43-compliant VECTOR-COPY and VECTOR-APPEND primitives.
(s9.c, s9.scm)
2012-11-26
Fix: REM-PROP failed to remove properties from empty lists. (lib/)
Removed SYS:LCHOWN and SYS:LUTIMES system calls. Caused only
portability issues. (ext/)
2012-11-25
Added S9SYMBOLS program (dump symbols from help pages). (prog/)
2012-11-24
Added "-i -" (don't load heap image) option. (s9.c)
2012-11-18
Added color support to GET-LINE. (ext/)
Added more key codes to GET-LINE. (ext/)
2012-11-15
Added CURS:KEY-DC (delete-char key), CURS:KEY-IC (insert-char key),
and CURS:KEY-END constants. (ext/)
2012-11-14
Fix: swapped fore/background arguments of CURS:COLOR-SET. (ext/)
2012-11-13
Fix: PACKAGE was lacking an import of FILTER. (lib/)
Fix: test process created wrong image file. (util/)
Thanks, Doug Currie!
2012-11-12
Added color support to the curses extension. (ext/)
Added the CURS:COLOR-SET and CURS:HAS-COLORS primitives. (ext/)
Updated the help pages.
2012-11-11
Simplified creation of top-level bindings. (s9.c, s9.h)
Removed SYNTAX? predicate. (s9.c)
Added -P (prolog) and -E (epilog) options to EDOC. (prog/)
Changed web color scheme. (util/)
2012-11-09
Factored out CHAR-PLOT from RUNTIME-STATS. (ext/, lib/)
Made CHAR-CANVAS a package. (lib/)
Made RUNTIME-STATS a package. (ext/)
2012-11-08
Made IOTA accept a second argument. (lib/)
Added the CHOOSE procedure. (lib/)
Added the CURRYR (curry-right) macro. (lib/)
2012-11-07
Made GENSYM accept a symbolic argument. (s9.c)
2012-11-04
Added extra LDFLAGS for OSX. Thanks, Doug Currie!
Fix: (lambda x ...) did not work in SYNTAX-RULES. (lib/)
2012-11-02
Fixed a potential memory leak in SYS:EXECVE. (ext/)
Made (the still broken) SYNTAX-RULES alpha-rename variables
of named LET and DO. (lib/)
2012-11-01
Added LIST-COPY and TAKE procedures. (lib/)
Renamed GROUP-LIST to GROUP, swapped arguments to be more
consistent with other list procedures. (lib/)
Reverted EQUAL? to comparing vectors by converting them
to lists first. (s9.c)
2012-10-30
Renamed QUEUE and UNQUEUE to QUEUE! and UNQUEUE!. (lib/)
Updated help pages.
Cleaned up cooperative threads procedures and fixed last thread
exit problem. (lib/)
Made the interpreter reset the TTY when exiting after an error.
(s9.c)
Added more EQUAL? tests. (util/)
2012-10-27
Added a SIGTERM handler to reset the TTY when curses support
is compiled in. (s9.c)
2012-10-22
Optimized DRAW-TREE. (contrib/)
2012-10-21
Cleaned up DRAW-TREE code. (contrib/)
2012-10-19
Fixed order of assignment in FLUID-LET. (lib/)
2012-10-17
Made IOTA a single-argument procedure. (lib/)
Renamed IMPORT keyword of simple-modules to USING. (lib/)
2012-10-16
Fix: SCM2HTML did not reset color after comments in quoted
objects in string-input mode. (s9.c)
2012-10-14
Suppressed trailing blanks when stopping run-away output. (s9.c)
Fixes bounds checking in multi-dimensional ARRAYs. (lib/)
2012-10-13
Fix: NUMBER->STRING would suppress trailing zeroes in expanded
real numbers. E.g.: (number->string 1.23e5) ==> "123". Oops!
(s9-real.scm)
2012-10-11
Made SCM2HTML accept upper case # syntax, e.g.: #F. (contrib/)
2012-10-11
Made BIT-OP variadic. (s9.c)
Added BIT-OP operations 16 (shift left) and 17 (shift right). (s9.c)
2012-10-10
Made EQUAL? cons-free when comparing vectors. (s9.scm)
2012-10-09
Made the reader and printer abort processing of suspiciously
deeply nested lists and vectors. Thanks to dig1 and bsamograd
on reddit! (s9.c, s9.h)
Made EDOC generate back links only in level-0 headings. (prog/)
2012-10-05
Now accepting [...] as an alias of (...). (s9.c)
Updated SCM2HTML to handle [...] properly. (contrib/)
Updated test suite. (util/)
Fix: STANDARD-ERROR-PORT was documented as STANDARD-ERROR. (help/)
2012-10-04
Fix: error reporting was broken by interruptible printer. (s9.c)
2012-10-03
Made WRITE and DISPLAY primitives interruptible. (s9.c)
Passed help files through spell-checker.
(lib/, contrib/, prog/, help/, edoc/)
2012-10-02
Added "variable index" command to EDOC. (prog/)
Added REAL type to TYPE-OF and TYPE-CASE. (lib/)
2012-09-29
Added "non-printing index" command to EDOC. (prog/)
2012-09-25
Added "unreadable" syntax (#<foo>) to SCM2HTML. (contrib/)
2012-09-24
Fixed quotation in SCM2HTML. (contrib/)
Added -t (tilde-quotes) flag to SCM2HTML1. (prog/)
2012-09-22
Added style for invisibly quoted forms to SCM2HTML. (contrib)
2012-09-21
Added the TILDE-QUOTES option to SCM2HTML. (contrib/)
Made EDOC pass 'TILDE-QUOTES: #T to SCM2HTML. (prog/)
2012-07-09
Changed webdump color scheme. (util/)
Adapted web theme to current home page. (util/)
Updated the man page. (s9.1)
Misc. cosmetical changes. (lib/)
2012-07-08
Renamed SOS to S9SOS - S9 Simple Object System. (contrib/)
Replaced the '!image' option by '-i image'. (s9.c)
Allowed to specify an image source file with '-i'; made the
LIBRARY option obsolete. (s9.c)
Cleaned up some meta files.
2012-07-06
Fixed more typos.
2012-07-05
Removed the ARSE development environment, because it has a
design bug that makes it crash when undoing changes near the
top or bottom of a file.
Fixed a few typos.
Fix: BIT-OP could overflow on 64-bit systems. (s9.c)
2011-05-11
Cleaned up the Unix/POSIX/XOPEN Mambo Jambo prelude. (s9.h)
Added some casts to make later GCCs happy. (s9.c, s9-real.c)
(unreleased.)
2010-11-13
Fix: sudden allocation of large vectors failed, even if enough
vector space was present (this did not happen when allocating
lots of small vectors, releasing them, and then allocating a
large vector). (s9.c)
2010-10-29
Fix: missing hash-table reference in memoize.scm. (lib/)
2010-10-11
Added GET-PROP, PUT-PROP, etc. (lib/)
2010-10-08
Added STRING-PREFIX=? and STRING-PREFIX-CI=? procedures. (lib/)
2010-10-07
Fix: MAKE-STRING and MAKE-VECTOR did not check for negative
arguments. (s9.c)
2010-10-06
Added TIME-ADD, TIME-SUBTRACT, TIME-DIFFERENCE, TIME-BEFORE?,
and TIME-AFTER? procedures. (lib/)
Moved SWAP! to "setters.scm"; removed "swapb.scm". (lib/)
2010-10-05
Added small-magnitude bit operators (bitops). (lib/)
2010-10-04
Renamed BITWISE-AND-NOT --> BITWISE-NOT-AND,
BITWISE-OR-NOT --> BITWISE-NOT-OR,
BITWISE-XOR-NOT --> BITWISE-NOT-XOR. (lib/)
Added fast bit operations (BIT-OP). (s9.c)
2010-10-03
Misc. minor changes. This is the book version.
2010-09-29
Applied minor change to RIB internal structure. (s9.c)
2010-09-27
Added \i (image) mode to EDOC. (prog/)
2010-09-23
Added "NIL" and "@ rest" syntax to MAKE-MATCHER. (lib/)
2010-09-22
Added line concatenation via \\ to EDOC, made EDOC's -b
option link to a file given on the command line instead of
hardwiring "index.html". (prog/)
2010-09-21
Changed MAKE-MATCHER semantics. Once again. :-/ But this
time it will be final! (lib/)
Moved the MAKE-MATCHER code to the EDOC section. (lib/, edoc/)
2010-09-19
Re-organized the "primitives" section. (s9.c)
2010-09-16
Moved SYNTAX-RULES to EDOC section. (lib/, edoc/)
2010-09-13
EDOC: Improved layout of Lout output; still experimental,
though! (prog/)
2010-09-11
Fixed some minor 64-bit/prototyping glitches. (s9*.c)
2010-09-10
Added HTMLIFY-CHAR and LOUTIFY-CHAR to library. (lib/)
Started Lout backend in EDOC. (prog/)
2010-09-09
EDOC: improved error messages, implemented strict mode
(being picky about matching braces). (prog/)
2010-09-07
Fixed botched optimization in EXP function. (s9-real.scm)
2010-09-06
Cleaned up real number primitives. (s9-real.c)
2010-09-05
DISPLAY/WRITE now round the last digit of real numbers with
large mantissas, so 1.99999999999999997 actually prints as
2.0 on 32-bit systems. (s9-real.scm)
Added INC!, DEC!, and SET-VARS! syntax. (lib/)
2010-09-04
Factored out CHECK-BINDINGS and SPLIT-BINDINGS in the Scheme
core. (s9.scm)
Fix: a quotation char ('`,) followed by a closing paren swallowed
that closing paren. (s9.c)
2010-09-03
Fix: APPEND accepted atoms in positions other than the last. (s9.scm)
PRETTY-PRINT now prints (and), (or), and (begin) more nicely.
(contrib/)
2010-09-02
Allowed nested quasiquotation as long as an embedded QUASIQUOTE
is inside of UNQUOTE or UNQUOTE-SPLICING. (s9.scm)
Applied more optimizations to MAKE-MATCHER. (lib/)
Added GROUP-LIST procedure to library. (lib/)
Fix: WITH-OUTPUT-TO-FILE always returned #<unspecific>. (s9.scm)
2010-09-01
Made STRING and VECTOR primitives. (s9.c)
Fix: SYS:READLINK did not NUL-terminate its return string. (ext/)
Optimized internal accessors of MAKE-MATCHER. (lib/)
2010-08-31
Changed PACKAGE syntax and semantics. (lib/)
Added Red-Black Trees. (lib/)
Various small changes. (s9.c)
2010-08-29
Changed MAKE-MATCHER syntax. (lib/)
Retired ML-MATCH syntax. (lib/)
2010-08-26
Applied various cosmetics and micro-optimizations. (s9.c)
2010-08-25
Changed environment box model from (name . (value)) to
(name . value), (ab?)using the CDR field as a box. This
saves quite a few conses during evaluation. (s9.c)
Improved syntax checking in local DEFINEs. (s9.c)
Added detection of improper lists (syntax errors) in
special forms. (s9.c)
2010-08-24
Made STATS primitive expand macros before evaluation. (s9.c)
2010-08-22
Fix: Made EXPT return an inexact number when passed an inexact
argument, because conversion lost digits. Also made SQRT return
an inexact result. (s9-real.scm)
2010-08-20
Documented EDOC using EDOC. (prog/)
Fix: counting newlines in block comments. (s9.c)
2010-08-19
SCM2HTML: added support for block comments. (s9.c)
2010-08-15
Fix: all real numbers must be inexact according to R4RS. (s9.c)
Fixed a precision bug in mixed bignum/real operations. (s9-real.c)
Fixed missing trailing zero in (number->string 1.0). (s9-real.scm)
2010-08-14
Cleaned up SCM2HTML program. (contrib/)
Added C2HTML program. (contrib/)
2010-08-13
Changed interface of SCM2HTML and moved it to contrib/.
Added SCM2HTML1 program (SCM2HTML wrapper). (prog/)
Fix: (+ 0.0 -1.0e-999999999) gave 0.0. (s9-real.c)
Fix: (+ #e0.0 #e1.0e-999999999) gave an inexact result. (s9-real.c)
2010-08-12
ARSE: made [d][/]x and [d][?]x repeatable. (contrib/)
Added ,q (sys:exit) meta command. (s9.c)
Added #| ... |# comments. (s9.c)
2010-08-10
Tweaked real number interface (internal). (s9*.[ch])
Updated the man page. (s9.1)
2010-08-09
Finished integration of big real number support. (*.c, *.scm)
2010-08-08
Re-integrated big real arithmetics. (*.[ch], *.scm)
Added real number test suite. (util/)
2010-08-07
Added make-cats.scm program and CATEGORIES.html file. (util/)
2010-08-06
ARSE: fix: clear undo log when loading a different file
into an edit buffer. (contrib/)
2010-08-03
Fix: (,x) was interpreted as a meta command. (s9.c)
Fix: SYNTAX-RULES failed to detect some syntax errors
before ellipses. (lib/)
S9 SOS: make <built-in> instantiation invalid. (contrib/)
Added 'COMPRESS: option to RUNTIME-STATS. (ext/)
2010-08-02
Applied some cosmetics to SYNTAX-RULES. (lib/)
Added LISTQ syntax. (lib/)
Made APPEND fold to the right (O(n) instead of (O(n^c)
when appending multiple lists). (s9.scm)
Added COLS program. (prog/)
2010-08-01
CHAR-CANVAS: auto-clipping out-of-range coordinates. (lib/)
RUNTIME-STATS: misc. small fixes. (ext/)
2010-07-31
Added plotter and table formatter to RUNTIME-STATS. (ext/)
Fixed CANVAS-PLOT-LINE. (lib/)
2010-07-30
Added the RUNTIME-STATS procedure to library. (ext/)
Added SWAP! syntax to library. (lib/)
Added character-based canvas to library. (lib/)
2010-07-29
Made STATS return a list instead of printing its data. (s9.c)
Added SYS:GETTIMEOFDAY extension procedure. (ext/)
Added TIME procedure to library. (/ext)
Fixed S9 SOS built-in hierarchy. (contrib/)
2010-07-28
Added meta commands, which are entered by typing a #\,
at the top level and without any enclosing parens. See
S9(1) for details. (s9.c)
2010-07-27
Added PUSH! and POP! macros. (lib/)
Added PACKAGE macro. (lib/)
2010-07-26
Removed UNDEFINED primitive; causes only trouble. (s9.c)
Added minor optimizations to MAKE-MATCHER. (lib/)
Made MAKE-MATCHER and ML-MATCH two separate packages. (lib/)
2010-07-25
Made S9 not count initial GC in STATS. (s9.c)
Added cons cell statistics to interpreter. (s9.c)
Fix: SYNTAX-RULES failed to expand stuff following "...". (lib/)
2010-07-24
Added TREE-MAP procedure. (lib/)
Fix: RE-MATCH returned wrong format when processing
REs beginning with "^" in combination with 'ALL. (lib/)
2010-07-23
Finished the S9 SOS and its documentation. (contrib/)
2010-07-21
Made ":set regex" default in ARSE. (contrib/)
2010-07-20
Bootstrapped SOS. (contrib/)
2010-07-19
ARSE: removing output that begins with ";" when reloading
a buffer. (lib/)
2010-07-18
Added first sketch of SOS (Scheme Object System). (contrib/)
Added 'REVERSE keyword to T-SORT; added T-SORT-NET. (lib/)
Added 'TOP-DOWN option to T-SORT. (lib/)
ARSE: added "scheme-init" option. (contrib/)
2010-07-17
Added 'CONVERT-UNREADABLE option to READ-FROM-STRING. (lib/)
Added help pages for the REVERSE!, STATS, SYNTAX?, TRACE, VOID,
and UNDEFINED procedures. (help/)
2010-07-16
Added UNDEFINED procedure; see s9(1). (s9.c)
2010-07-15
Added KEYWORD-VALUE procedure. (lib/)
Rewrote HASH-TABLE, added support for 'SIZE and 'TEST keywords.
(lib/)
Added WHEN, UNLESS, WHILE, and UNTIL syntax. (lib/)
ARSE: made [TAB] insert blanks when not typing a symbol. (contrib/)
2010-07-14
Added DUPLICATES procedure and friends. (lib/)
DEFINE-STRUCTURE not reports duplicate slot names. (lib/)
2010-07-13
Added queue data type. (lib/)
2010-07-12
Added MEMOIZE procedure and DEFINE-MEMOIZED syntax. (lib/)
2010-07-11
Added ID (identity) procedure. (lib/)
ARSE: added regex support to [/] and [?] commands. (contrib/)
Re-organized library. (lib/)
Added check-descr.scm to check descriptions for web dump. (util/)
2010-07-10
Added SPLIT and MERGE procedures, rewrote MERGESORT. (lib/)
Fixed stuck state (0) in RANDOM-STATE. (lib/)
Fix: SYS:MAKE-INPUT-PORT and SYS:MAKE-OUTPUT-PORT
could return a closed port due to GC. (ext/)
Rewrote BITWISE-... operators. (lib/)
Added INTEGER->BINARY-STRING and BINARY-STRING->INTEGER. (lib/)
Fix: RE-SUBST generated wrong matches with trailing "\\)". (lib/)
2010-07-09
ARSE: fixed spurious trailing lines after undo. (contrib/)
ARSE: added regular expression support (:s). (contrib/)
Added COMPOSE, COMPLEMENT, TRUE, and FALSE procedures. (lib/)
Added RANDOM and RANDOM-STATE procedures. (lib/)
2010-07-08
Added SYNTAX? primitive. (s9.c)
Added T-SORT (topological sort) procedure. (lib/)
Added EQUAL-CI? procedure. (lib/)
Added TYPE-OF procedure and TYPE-CASE syntax. (lib/)
Added ASSP and MEMP procedures. (lib/)
Applied various small fixes to PRETTY-PRINT. (contrib/)
Updated man page. (s9.1)
2010-07-07
Added RE-SUBST procedure to REGEX package. (lib/)
Added TREE-COPY procedure. (lib/)
2010-07-06
Added auto-completion to ARSE. (contrib/)
Added ADJOIN, SET-DIFFERENCE, and SUBSET? procedures. (contrib/)
Added <TYPE>-COPY procedure to DEFINE-STRUCTURE. (lib/)
Replaced lots of REVERSEs with REVERSE!. (*)
2010-07-05
Added POSITION and friends to library. (lib/)
ARSE: fixed tab expansion; added "unexpand" option. (contrib/)
2010-07-04
Added the AMB (backtracking) operator. (lib/)
Added HASH-TABLE-REMOVE! and ALIST->HASH-TABLE; renamed
HASH-TABLE->LIST to HASH-TABLE->ALIST. (lib/)
Fix: (cond ('(()))) was an error. (s9.c)
2010-07-03
Fix: FOR-ALL sometimes returned #T unexpectedly. (lib/)
Fix: CALL/CC could crash AND, BEGIN, COND, and OR. :-/ (s9.c)
Added ARRAY-MAP procedure. (lib/)
2010-07-02
Added more array operations. (lib/)
2010-07-01
Added Common LISP-style CATCH/THROW. (lib/)
Added ARRAYs and array operations. (lib/)
2010-06-30
Renamed DEFINE-RECORD to DEFINE-STRUCTURE, allowed simpler
slot syntax. (lib/)
2010-06-29
ARSE: reload main buffer automatically when recovering from
a REPL error. (s9.c)
ARSE: fix: undo delete lines at end of buffer. (contrib/)
2010-06-28
Renamed EXPAND-MACRO to MACRO-EXPAND (more CL'ish). (s9.c)
Added MACRO-EXPAND-1 procedure. (s9.c)
Added Common LISP TAGBODY to library. (lib/)
2010-06-27
Added CALL-WITH-CURRENT-CONTINUATION (CALL/CC). (s9.c)
Related critical change in s9.c:_eval():
name = car(rib_source(rib));
- /* Save result */
- car(Stack) = Acc;
if (Trace_list != NIL)
Imported CALL/CC description from R4RS. (help/)
Added LET/CC to library. (lib/)
Added cooperative thread functions. (lib/)
Removed CALL-WITH-ESCAPE-CONTINUATION.
2010-06-26
Added REVERSE! primitive and used in some places. (s9.c, s9.scm)
Made (re-match (re-comp "^") "foo") ==> ((0 0))
and (re-match (re-comp "$") "foo") ==> ((3 3)). (lib/)
Added 'ALL option to RE-MATCH. (lib/)
Added VECTOR-MAP, made VECTOR-MAP! variadic. (lib/)
Added STRING-MAP and STRING-MAP!. (lib/)
2010-06-25
Made S9 ignore SIGPIPE, so the SYS: procedures can catch broken pipe
conditions themselves. (ext/)
ARSE: ignore broken pipe condition when writing to REPL. (contrib/)
ARSE: added autocenter option. (contrib/)
Cleaned up the REGEX procedures and added submatches. (lib/)
Made RE-MATCH return ranges rather than strings. (lib/)
2010-06-24
Misc. clean-up.
2010-06-23
Factored out all the S9fES stuff in ARSE, so it can be ported to
other Schemes more easily. (contrib/)
ARSE: [r] did not check autoindent option. (contrib/)
Added ARSE porting instructions. (contrib/)
Added VECTOR-MAP! and STRING-SCAN procedures. (lib/)
ARSE: expanding tabs to spaces when reading filters, etc. (contrib/)
2010-06-22
Added DEFINE-RECORD syntax. (lib/)
(DEFINE-SYNTAX (F ...) <BODY>) accepted only a single-expression
body. Fixed that. (s9.c)
ARSE: no longer displaying the REPL buffer when reloading or
recompiling. (contrib/)
ARSE: some general clean-up. (contrib/)
2010-06-21
Finished Unix extension test suite. (util/)
Documented SYS:SLEEP, SYS:USLEEP. (help/)
2010-06-20
SYS:CHOWN did not work. (ext/)
ARSE: :s/<old>/... did not allow leading blanks in <old>. (contrib/)
ARSE: missing REAL-POS! in SUBSTITUTE and COLON-READ. (contrib/)
Added SYS:SLEEP, SYS:USLEEP procedures. (ext/)
2010-06-19
Removed SYS:LCHMOD; not portable. (ext/)
Cleaned up symlinks in help directory. (help/)
2010-06-18
Fix: hash tables did not allow negative numeric keys. (lib/)
2010-06-17
Added a quick and dirty dependency checking mode to S9RESOLVE.
(prog/)
Fixed some unresolved library dependencies. ;-)
* Explanation:
* The default image file contains most of the S9fES library
* functions, so it does not really need all those LOAD-FROM-LIBRARY
* calls. However, I consider it to be good style to make library
* dependencies explicit by adding them anyway. S9RESOLVE -d detects
* missing LOAD-FROM-LIBRARYs.
2010-06-16
Factored out FIND-HELP-PATH procedure. (ext/)
Added SPAWN-SHELL-COMMAND procedure. (ext/)
SPAWN-COMMAND has new semantics, SPAWN-SHELL-COMMAND implements
the old behavior. (ext/)
Added more missing symlinks to help directory. (help/)
2010-06-14
Added the SYS:FILENO procedure. (ext/)
Fix: SYS:SELECT sometimes returned #F even when some
descriptors were ready. (ext/)
Fix: PP-FILE could not find LINEFEED procedure. (contrib/)
Made the pretty-printer indent embedded IF, COND, etc in
code mode rather than data mode. (contrib/)
2010-06-13
Removed CURS:KEY-EOL from curses, because it is not the key
labeled "END" on a PC keyboard. Which KEY_ constant is used
for this key? My /usr/include/curses.h says KEY_SELECT, but
this does not appear to make sense. (ext/)
2010-06-12
Made READ-FROM-STRING skip over comments in multi-line input.
(contrib/)
Added SYS:CATCH-ERRORS and SYS:STRERROR primitives. (ext/)
Made SPAWN-COMMAND redirect stderr of the spawned command to
stdout so it can be read by the parent. (ext/)
Added URL-DECODE procedure to library. (lib/)
2010-06-11
Added the PP-STRING procedure to the pretty-printer. (contrib/)
2010-06-10
Added the INET-SERVER procedure to the extension library. (ext/)
Rewrote S9HTS using INET-SERVER. (prog/)
Reinstalled and fixed a load of wrong or missing symlinks in
help directory. (help/)
2010-06-09
Added the SPLIT-URL procedure to the library. (lib/)
2010-06-08
Added SYS:INET-GETPEERNAME primitive to Unix extension. (ext/)
Implemented S9HTS, a simple HTTP server. (prog/)
Added STRING-POSITION and friends to library. (lib/)
Added STRING-LAST-POSITION and friends to library. (lib/)
2010-06-06
Added the CURSES_RESET compile time option, which will
run CURS:ENDWIN automatically in the REPL, so Curses
cannot hose the interface in interactive sessions.
Of course, when using this option, (CURS:INITSCR) will
not have any effect when entered at the REPL. (s9.c)
Moved ARSE (was: SCHED) to contrib/, kept only the
command line interface in prog/.
Added ARSE installation procedure to Makefile.
Documented ! option. (s9.1)
Fix: not all globals were initialized in PRETTY-PRINT. (contrib/)
Fix: PP printed a lonely closing paren in intended applications
with no arguments. (contrib/)
2010-06-05
Added !image option to change the heap image name ad hoc. (s9.c)
2010-06-02
Fixed a few bugs in ADVGEN; it only worked due to the below
bug in S9. :-/
2010-06-01
Fix: Local environments of *dynamically* scoped (a.k.a. top-level)
procedures were still being propagated to functions called *iff*
there were multiple levels of local definitions in the top-level
procedure, e.g.:
(define (g) x)
(define (f) (let ((x 0))
(let () ; <-- this triggered the bug
(g)
#f)))
(f) ==> 0 ; should be an error (x undefined)
This is definitely fixed now. Regression test added. (s9.c)
2010-05-31
Intercepted more funny characters. (s9.c)
2010-05-30
Made STRING->NUMBER accept base prefixes. (s9.scm)
Replaced some applications of the obsolete WRONG procedure
with applications of ERROR. (s9.scm)
Made the interpreter identify funny input characters. (s9.c)
2010-05-28
Fixed a GC bug introduced by growing the pools independently.
This bug was triggered by using more vector space than node
space. (s9.c)
Improved the stress test suite. (util/)
2010-05-27
ADVGEN: renamed GO/RET to GO/SEL. (prog/)
Tweaked the sample adventure. (prog/)
2010-05-26
S9 now takes its image name from argv[0] instead of
hardwiring it. (s9.[ch])
Added new FORMAT help page with better explanations and
lots of examples; try (help 'format). (help/)
2010-05-25
Fix: FORMAT recursed indefinitely in case of an error
due to re-use of the name ERROR. (contrib/)
2010-05-24
Added expansion template to AND-LET* description. (lib/)
Added Curses interface help pages. (help/)
Added CURS:LINES and CURS:COLS procedures. (ext/)
Fix: MAKE-STRING did not type-check second argument. (s9.c)
2010-05-23
Added first version of a CURSES(3) interface. (ext/)
Fixed GC bug in APPEND2.
Made cons and vector pools grow independently. (s9.c)
2010-05-22
Stopped interpreter from reporting infinite sequences of '('
in error messages, even if the reported structure is cyclic.
Added AND-LET*. (lib/)
Minor cosmetics.
2010-05-21
Improved limited output in error messages. (s9.c)
Running "make tests" will now use a minimum heap image,
so unresolved references in the library will be detected.
(Makefile)
Improved ADVGEN error messages. (prog/)
Added COPY-FROM special description to ADVGEN. (prog/)
2010-05-20
Made DEFINE-SYNTAX an alias for DEFINE-MACRO; removed
DEFINE-MACRO. (s9.c)
Moved SYNTAX-RULES to the extension library. (lib/)
Added the STANDARD-ERROR-PORT, WITH-OUTPUT-TO-STDERR,
and CALL-WITH-STDERR procedures. (ext/)
Limited size of Scheme objects in error messages. (s9.c)
Updated S9(1) man page and help pages. (help/)
Various small fixes and cosmetics.
2010-05-19
Added GO/RET operator to ADVGEN. (prog/)
Applied various minor improvements to the pretty-printer.
(contrib/)
Added default values to PARSE-OPTIONS!. (ext/)
Added SCMPP pretty-print utility. (prog/)
Added more features to ADVGEN; see prog/advgen.txt.
2010-05-18
Fixed a long-standing bug that caused the following program
to evaluate to 1:
(define (g) x)
(define (f)
(let ((x 1))
(g)
#f))
(f)
This happened only if (g) was *not* a tail call. The critical
part of the fix is:
+ if (!tail && cdr(Environment) != NIL)
+ Environment = cdr(Environment);
in s9.c:bind_arguments().
2010-05-17
Added ADVGEN documentation, fixed some minor bugs. (prog/)
2010-05-16
Added GO/CUT operator to ADVGEN. (prog/)
Added STRING-FIND-LAST, STRING-FIND-LAST-WORD,
STRING-CI-FIND-LAST, STRING-CI-FIND-LAST-WORD. (lib/)
Fix: SCM2HTML did no longer accept input from stdin. (prog/)
Fix: SCM2HTML rendered #[bdox] literals in wrong color. (prog/)
Fix: ADVGEN: stupid bug in HTML postlude. (prog/)
Fix: SCM2HTML: #\$ is a valid symbol character. (prog/)
Added missing symlinks to help database. (help/)
2010-05-15
Documented NAME->FILE-NAME. (contrib/)
Added code to install utility programs. (Makefile)
Added COUNTER option type and "--" special argument
to PARSE-OPTIONS!. (ext/)
Added ADD/GO and REM/GO actions to ADVGEN. (prog/)
2010-05-14
Added new option types to PARSE-OPTIONS!. (ext/)
2010-05-13
Added STRING-TRANSLATE procedure to library. (lib/)
Finished sample ADVGEN adventure. (prog/)
Fixed a bug in PARSE-OPTIONS!: option args were always
taken from first option. Oops. (lib/)
2010-05-12
Fixed names in error messages of CAAR..CDDDDR. (s9.c)
Implemented first version of ADVGEN, an HTML adventure
generator. (prog/)
2010-05-11
Made email addresses in the code harder to harvest.