-
Notifications
You must be signed in to change notification settings - Fork 5
/
CHANGES
1789 lines (1781 loc) · 69.7 KB
/
CHANGES
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
Change Log
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 vector 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.
2010-05-10
Added HTMLIFY utility. (prog/)
Added stuff for automatic web site creation. (util/)
2010-05-09
Renamed all UNIX:... symbols to SYS:... and made naming
more consistent. All names in the SYS-UNIX extension now
begin with SYS:. (ext/)
Moved SYS:FLUSH with no args to library (FLUSH-OUTPUT-PORT). (ext/)
Added LETREC* syntax. (lib/)
2010-05-08
While I am at it: made these procedures primitives:
APPEND, LIST-TAIL, MIN, MAX. (s9.c, s9.scm)
Fixed READ-FROM-STRING (mixed up some numbers and
symbols). (lib/)
Added #B, #D, #O, #X prefixes to READ-FROM-STRING. (lib/)
Renamed STRING-FIND to STRING-LOCATE and STRING-CONTAINS
to STRING-FIND. Also swapped the arguments of STRING-FIND
so that STRING-FIND and STRING-LOCATE are more consistent
now. (lib/, contrib/)
Added [+-][st] modifiers to CHANGE-MODE. (ext/unix.scm)
2010-05-07
Made these procedures primitives: ABS, ASSQ, ASSV,
CAAR..CDDDDR, EQV?, EVEN?, LENGTH, LIST, MEMQ, MEMV,
NEGATIVE?, NOT, NULL?, ODD?, POSITIVE?, REVERSE, ZERO?.
Resulting speed increase is between 30% (libtest) and
70% (htmlize library). (s9.c, s9.scm)
Added -9 (highlight non-R4RS symbols) and -x (highlight
extensions) arguments to SCM2HTML utility. (prog/)
Added indentation of DO. (contrib/pretty-print.scm)
Fixed evluation of DO in PROGRAM?: allowed more than
one statement in body, made statement in termination
clause optional. (lib/programp.scm)
2010-05-06
Made DRAW-TREE print more compact trees by emitting the
conses of (...(x)...) as soon as possible. (contrib/draw-tree.scm)
Added interactive mode to SOCCAT program. (prog/)
Added UNIX:ACCESS help page.
2010-05-05
Added purely functional streams to library. (lib/streams.scm)
Added UNIX:WAITPID procedure.
Fixed type checking in UNIX:KILL (accepted single argument).
Added the SOCCAT utility. (prog/soccat)
2010-05-04
Added UNIX:SELECT procedure.
2010-05-03
Made argument of FLUSH optional (defaults to current output port).
Added UNIX:INET-CONNECT, UNIX:INET-LISTEN, and UNIX:INET-ACCEPT
procedures.
Made UNIX:* procedures print more informative error messages.
Added mode argument to UNIX:MKDIR, made it optional in MKDIR.
2010-05-02
Made UNIX:STAT not follow symlinks.
Added STRING-CONTAINS-WORD and STRING-CI-CONTAINS-WORD. (lib/)
Added FIND-HELP procedure. (ext/)
Made PARSE-OPTIONS! accept symbolic options (instead of strings).
2010-05-01
Added UNIX:SETUID, UNIX:SETGID. UNIX:GETPGID, UNIX:SETPGID.
Added DISPLAY*. (lib/)
2010-04-30
Added the UNIX:FORK, UNIX:WAIT, and UNIX:EXECV procedures.
Added the UNIX:ACCESS and SEARCH-PATH procedures. (ext/)
Replaced the primitive UNIX:SPAWN and SPAWN procedures with
the high-level SPAWN-COMMAND procedure. (ext/spawn-command.scm)
Added S9RESOLVE program, which resolves S9fES library
dependencies. (prog/)
Hash tables sizes now adapt automatically. (lib/hash-table.scm)
2010-04-29
Added more Unix procedures: UNIX:CLOSE, UNIX:CREAT, UNIX:DUP,
UNIX:DUP2, UNIX:LSEEK, UNIX:MAKE-INPUT-PORT, UNIX:MAKE-OUTPUT-PORT,
UNIX:OPEN, UNIX:PIPE, UNIX:READ, UNIX:WRITE, UNIX:UMASK.
Also added the APPEND-TO-OUTPUT-FILE procedure. (ext/)
2010-04-28
Added PARSE-OPTIONS! and friends. (ext/parse-options.scm)
Installing contribs directly in @LIBDIR@ now.
Made UNIX:READDIR skip the "." and ".." entries.
Added UNIX:RENAME procedure.
2010-04-27
Added the STRING-UNSPLIT procedure (lib/).
Made HASH-TABLE-REF return just a value (lib/hash-table.scm).
Error messages are now printed on stderr when the interpreter
runs in quiet mode (-q).
Added DIRNAME procedure.
Moved contrib/pretty-print.scm to prog/scm2html.scm and made
it a stand-alone program.
Moved S9 configuration from Makefile to config.scm.
2010-04-26
Added help pages for all remaining UNIX: procedures.
Added the STAT-type? predicates for finding out the
type of a directory entry.
Added the BASENAME procedure.
Removed the S9U(1) man page, because it basically duplicates
the help pages.
Added "programs" section (prog/) and dupes program.
2010-04-25
Added "pattern=mode" to UNIX:CHMOD.
Added some UNIX: procecures to the help database.
Added STRING-PARSE procedure.
Made STRING-SPLIT generate empty strings when multiple
subsequent separators are found.
Updated S9U(1) man page (was S9E(1) man page).
Updated help pages.
2010-04-24
Merged S9 and S9E interpreters; configure in Makefile.
Added third return value (PID) to UNIX:SPAWN.
Added UNIX:KILL and KILL procedures.
Added R4RS test cases to test suite.
2010-04-23
Removed real number stuff.
Removed Scientific Calculator stuff.
Removed statistics package.
------------------------------------------------------------------------
Forked this version.
------------------------------------------------------------------------
2009-09-06
Removed EXPAND-QUASIQUOTE. It is no longer needed, because
EXPAND-MACRO can now be used to expand quasiquoted forms.
Documented the interpreter start-up process in the man page.
Renamed WRONG to ERROR to make it more compatible with
SRFI-23 error reporting.
2009-09-05
Rewrote QUASIQUOTE as a macro and removed all quasiquotation
functionality from the C part.
2009-09-03
Included "./lib" and "./contrib" in DEFAULT_LIBRARY_PATH, so
S9 can load libraries after just compiling it in its build
directory.
Added the S9:S9 start-up hook. When a nullary procedure named
S9:S9 exists, it will be called when S9 starts.
Added the DUMP-IMAGE primitive, which allows to write a new
heap image from the REPL.
Updated the help pages.
2009-09-02
Made SQRT return an exact value whenever possible.
2009-08-14
Fix: '() printed two ()'s (was introduced with #<NaN>).
Added the UNSORT procedure to LIB.
2009-08-11
Fixes:
- Cleaned up the SC extension;
- Added missing S9SC(1) man page.
Thanks again, Masaru KIMURA.
2009-08-08
Added constants for options, so you can write
(plot* -7 7 sin type: scatter style: 3)
instead of
(plot* -7 7 sin 'type: 'scatter 'style: 3).
2009-08-07
Added 'X-GRID: and 'Y-GRID: options to S9SC SETUP procedure.
Added abbreviations, e.g.: 'STEP: for 'X-STEP: and 'Y-STEP:, etc.
Fix: second argument of EXPT could not be real.
2009-08-06
Added option argument checking to S9SC procedures.
Fix: made PRINT-CODE generate proper links for LOAD-FROM-LIBRARY
arguments without ".scm" suffix.
2009-08-05
Wrote the S9SC(1) man page.
2009-08-04
Re-organized the extension libraries.
Renamed the GFX extension to SC.
Added initialization procedures to extensions.
Made (LOG N) return #<NaN> for non-positive N.
2009-07-26
Fixed some warnings in GFX extension. Thanks, Barak Pearlmutter.
2009-07-25
Added statistics package to CONTRIB.
Added the Scheme 9 Scientific Calculator extension (S9SC).
Note that S9SC is *very* experimental at this stage.
2009-07-08
Fixed that rounding bug in ATAN.
2009-07-05
Test suite failed on 64-bit machines due strange rounding
errors in ATAN. Decreased accuracy to 4 digits as a lame
work-around. Suggestions welcome.
2009-07-04
Added support for unspecific digits (#) to STRING->NUMBER.
Fix: (ASIN 1) and (ACOS 0) were undefined.
Fixed some minor flaws.
Added tests for ACOS, ASIN, ATAN, and STRING->NUMBER.
2009-07-01
Added the ACOS, ASIN, ATAN procedures.
Fix: real number normalization *first* removed trailing
zeros and *then* truncated the mantissa. Oops.
2009-06-29
Added '#' syntax for unspecific digits in inexact numbers.
2009-06-26
Fix: STRING->NUMBER always returned an inexact result for
real number representations.
2009-06-25
Fix: Stack was not cleaned up properly in some error conditions.
Fix: (*) and (+) could crash the interpreter.
Internal: Added 64-bit emulation for 32-bit systems.
2009-06-15
Minor cleanup, added comments where necessary.
* Do not expect any updates in the near future.
* I need a break from programming.
* Bug reports are still welcome, but will get low
* priority for now.
2009-06-09
Fixed a variable collision in the hash table implementation.
(lib/hash-table.scm)
2009-06-08
Made PRINT-CODE recognize new numeric functions as primitives.
Fixed INVERSEO procedure in AMK.
2009-06-07
Made STRING->NUMBER recognize real numbers.
Fix: missing initialization of got_d in string_numeric().
Fix: FLOOR and EXACT->INEXACT did not normalize their results.
Simplified counter_to_string(), based on code by Masaru KIMURA.
Added loads of tests for STRING->NUMBER.
2009-06-06
Extended domain of NUMBER->STRING to REAL.
Added support for the "precision markers" D,F,L,S, although
only one floating point precision exists.
Fix: MANTISSA did not return negative signs.
Fix: INEXACT->EXACT lost the sign of its operand.
Fix: #I created a double sign in negative integers.
Added/updated help pages for various procedures.
Added more tests.
2009-06-05
Fix: SIN, COS, TAN expected degrees, should be radians. Oops.
Ran further 64-bit tests on the Alpha, all passed.
2009-06-04
Implemented LOG and EXP procedures. Added tests.
Fixed size of Called_procedures[]. Good catch, Masaru KIMURA.
2009-06-03
Implemented CEILING, FLOOR, ROUND, TRUNCATE procedures.
Implemented SIN, COS, and TAN procedures.
Added tests for all of the above.
Made procedures expecting integers accept real numbers too, as
long as they are exact and can be converted to integer without
loss of precision. Added tests.
Made the reader accept an excess number of digits in the mantissa,
giving an inexact number.
2009-06-02
* I have tested this release on my Alpha with -DBITS_PER_WORD_64
* and it passed all tests. If make test still fails on Linux/PPC,
* I would need SSH access to a PPC box to investigate further.
Implemented SQRT.
Fixed INTEGER? (mistook random objects for integers).
Removed some 64-bit glitches.
Applied some cosmetics.
Added test cases.
2009-06-01
Implemented real number division (/).
Made INTEGER? return #T for reals that can be converted to
integer without loss of precision.
Made INEXACT->EXACT return an integer whenever possible.
Extended domain of EXPT to real.
Implemented the internal EXPONENT and MANTISSA procedures.
Fixed a GC leak in real_normalize(). Thanks, Masaru KIMURA.
Added test cases for / and EXPT.
Added more type test cases.
Updated the S9(1) man page.
2009-05-31
Implemented real number multiplication (*).
Just try: (expt 9.9 999999999). Is this cool?
Intercepted numeric underflow and overflow.
Added test cases for real *.
Added #E and #I syntax.
Added real number test cases for #E, #I, EXACT->INEXACT,
INEXACT->EXACT, NEGATIVE?, POSITIVE?, ZERO?.
2009-05-30
Fixed INEXACT->EXACT (sign error).
Implemented real -.
Implemented exactness in
- the +, MIN, and MAX procedures;
- bignum-->real conversion;
- real number normalization.
Added real number tests for -, ABS, MIN, MAX.
Added test cases for EXACT->INEXACT and INEXACT->EXACT.
2009-05-29
Implementated real +.
Implemented EXACT? and INEXACT?.
Implemented EXACT->INEXACT and INEXACT->EXACT.
Fixed a few bugs in real <.
Added real number tests for +.
2009-05-28
Added more test cases for real <.
Extended domains of <=, >, >= to real.
Added real number tests for <=, >, and >=.