This repository has been archived by the owner on Jan 9, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 34
/
ANNOUNCE
2324 lines (1615 loc) · 70.8 KB
/
ANNOUNCE
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
Subject: [announce] Vicare Scheme revision 0.4.1-devel.3
Vicare Scheme
=============
Vicare Scheme is an R6RS compliant fork of Ikarus Scheme, aiming to be a
native compiler for R6 Scheme producing single threaded programs running
on Intel x86 32-bit and 64-bit processors. It is tested only on
GNU+Linux; it should work on POSIX platforms, but not on Cygwin.
"Vicare" is pronounced the etruscan way.
The latest release tarball of this package can be downloaded from:
<https://bitbucket.org/marcomaggi/vicare-scheme/downloads>
the home page of the Vicare project is at:
<http://marcomaggi.github.io/vicare.html>
development takes place at:
<http://github.com/marcomaggi/vicare/>
and as backup at:
<https://bitbucket.org/marcomaggi/vicare-scheme/>
Notes for revision 0.4.1-devel.3
--------------------------------
* Fixes issue #97.
* Minor improvements in core primitives acting on booleans.
Notes for revision 0.4d1.2
--------------------------
* Fixes issue #96.
Notes for revision 0.4d1.1
--------------------------
* Fixes issue #94.
Notes for revision 0.4d1
------------------------
* With this tag the project is starting to favour the typed language
over the standard one.
Notes for revision 0.4d0
------------------------
This project is no more hosted at SourceForge and Gitorious. It is
still hosted at Github and newly hosted at Bitbucket.
Lots of backwards incompatibilities... life is hard!
* The boot images have been rotated.
* The package is now using a single, big, all-inclusive "Makefile.am".
Building the package is probably slower then before. Using the -j
option of "make" helps a bit; I am not sure it can rebuild reliably,
but it should.
* BACKWARDS INCOMPATIBILITY Ikarus is no more. The library (ikarus) and
the libraries in the hierarchy (ikarus system ---) do not exist
anymore.
* BACKWARDS INCOMPATIBILITY The libraries infrastructure has been
completely overhauled. There are too many changes to list them here,
we must read the relevant documentation; system environment variable
names and command line option names have changed too (sorry). The
most important stuff:
- Version numbers are supported. If, while scanning the search path,
a library is loaded and its version number does not match the
requested version reference: that library is discarded and the
search goes on.
- The library (vicare) now has a version number; the full library name
is:
(vicare (0 4 ?year ?month ?day))
where ?YEAR, ?MONTH and ?DAY are fixnums representing the date of
the last build.
- The default of this package (and in future for all the other Vicare
packages) is to install only the FASL files, and leave the sources
uninstalled; to install also the source libraries we must configure
with:
$ configure --enable-sources-installation ...
- When running "make all" from the build directory of this package:
the libraries are compiled.
- Previously there were 2 file extensions for FASL files to
distinguish a 32-bit build from a 64-bit build:
.vicare-32bit-fasl
.vicare-64bit-fasl
there is now a single FASL file extension: ".fasl". We should
arrange the package configuration to install 32-bit FASL files
under:
$(prefix)/lib/vicare-scheme
and 64-bit FASL files under:
$(prefix)/lib64/vicare-scheme
- Caching of libraries compiled on-the-fly (under "~/.vicare") is no
more supported.
See the documentation nodes "using libraries" and "libutils". Most
likely this code needs to be ironed out.
* BACKWARDS INCOMPATIBILITY The bindings that deal with library names,
library references, search paths and related stuff have been moved to
the library (vicare libraries), which is implemented by the boot
image; such bindings are no more reexported by (vicare), (nausicaa)
and (nausicaa mehve). The relevant documentation has been moved to
the node "libutils".
* BACKWARDS INCOMPATIBILITIES Removed undocumented libraries exported by
the boot image:
(chez modules)
(ikarus symbols)
(ikarus parameters)
* BACKWARDS INCOMPATIBILITY The library (vicare $posix) has been renamed
to (vicare language-extensions $posix).
* Added documentation for the previously undocumented
MAKE-COMPILE-TIME-VALUE and a general explanation of how to use
compile-time values. See the documentation node "iklib expander ctv".
* Added syntax SPLICE-FIRST-EXPAND to (vicare). See the documentation
node "iklib syntaxes splice1st" for details.
* BACKWARDS INCOMPATIBILITY Nausicaa's support for experimental nested
method invocation added in release 0.3d7 has been removed. It is no
more possible to use the auxiliary syntax "=>" to nest members
invocation:
(define-label <alpha>
(method ((one <list>) self a b)
(list self a b)))
(let (((O <alpha>) 0))
(O one 10 20
=> map add1)) ;;; ERROR
* It makes no sense to develop Vicare Scheme if it does not
differentiate itself from other implementations; so with this release
a somewhat bold syntax is introduced for the Nausicaa language on top
of SPLICE-FIRST-EXPAND.
Whenever an expression in OOPP syntax appears as first subform, it
has a single return value and such return value is tagged: the result
of its expansion is spliced in the enclosing form; this allows a more
natural OOP--like syntax to access field's tag members. It is clearly
not ``Schemey''. Here are some examples:
(<spine> L '(0 1 2 3 4))
(L car) => 0
(L cdr) => (1 2 3 4)
((L cdr) car) => 1
((L cdr) cdr) => (2 3 4)
(((L cdr) cdr) car) => 2
(((L cdr) cdr) cdr) => (3 4)
((((L cdr) cdr) cdr) car) => 3
((((L cdr) cdr) cdr) cdr) => (4)
(((((L cdr) cdr) cdr) cdr) car) => 4
(((((L cdr) cdr) cdr) cdr) cdr) => ()
more details in node "oopp notation nesting" of documentation file
"nausicaa.*".
* BACKWARDS INCOMPATIBILITY For those who care about Nausicaa (if any):
sorry to introduce this backwards incompatibility. The predicate
syntax:
(<tag>) ==> #<predicate function>
is no more supported. To retrieve the predicate function of a tag we
can now use the "#:predicate" keyword:
(<fixnum> #:predicate) => fixnum?
and we can also directly apply the predicate function to the result of
an expression with the keyword "#:is-a?":
(<fixnum> #:is-a? 123) => #t
(<fixnum> #:is-a? "123") => #f
the "is-a?" syntax is still available:
(is-a? 123 <fixnum>) => #t
(is-a? "123" <fixunm>) => #f
* A new "cast" syntax replaces the old predicate syntax. It is as
follows:
((?tag) ?expr)
whenever this syntax appears as first subform of an enclosing form,
the following chain of expansions takes place:
(((?tag) ?expr) ?arg ...)
==> ((?tag #:nested-oopp-syntax ?expr) ?arg ...)
==> (?tag #:oopp-syntax (?expr ?arg ...))
otherwise the expansion is just:
((?tag) ?expr)
==> ?expr
This syntax allows expressions like:
((<fixnum>) 123) => 123
(((<fixnum>) 123) add1) => 124
(((<fixnum>) 123) <= 200) => #t
(((<fixnum>) 123) <= 100) => #f
* If the maker syntax is used as first subform of an enclosing form, the
nested OOPP syntax is available.
((<pair> (1 2)) car) => 1
((<pair> (1 2)) cdr) => 2
* Added documentation to explain that the following is a perfectly valid
Vicare program:
(import (vicare))
(let ()
(library (ciao)
(export a)
(import (rnrs))
(define a 1))
(library (hello)
(export b)
(import (rnrs))
(define b 1))
(import (ciao))
(import (hello))
(display (list a b)))
* Added struct related bindings to (vicare):
struct-type-descriptor?
struct-type-and-struct?
struct-type-field-ref
struct-type-field-set!
$struct-type-field-ref
$struct-type-field-set!
* Extended RECORD-ACCESSOR and RECORD-MUTATOR to accept as second
argument either a relative field index, as specified by R6RS, or a
symbol representing a field's name. In the second case: the RTD and
its parents are searched for the first matching field specification,
so fields of the sub-types take precedence. Added
UNSAFE-RECORD-ACCESSOR and UNSAFE-RECORD-MUTATOR to (vicare).
* Modified syntax TYPE-DESCRIPTOR to work on both struct type names and
R6RS record type names:
(define-struct color
(red green blue))
(type-descriptor color) => #<color rtd>
(define-record-type color1
(fields red green blue))
(type-descriptor color1) => #[rtd name=color1]
* BACKWARDS INCOMPATIBILITY The identifier STRUCT-TYPE-DESCRIPTOR is no
more an alias of STRUCT-RTD; instead it is a syntax like
RECORD-TYPE-DESCRIPTOR for structs:
(define-struct color
(red green blue))
(struct-type-descriptor color) => #<color rtd>
* Added syntax IS-A? to (vicare):
(import (vicare))
(define-struct doublet
(a b))
(define-record-type triplet
(fields a b c))
(is-a? (make-doublet 1 2) doublet) => #t
(is-a? (make-triplet 1 2 3) triplet) => #t
(is-a? 123 triplet) => #f
Notice that this syntax is re-exported by (nausicaa): the tags
defined by Nausicaa now interface themselves with IS-A? from (vicare).
* Added syntaxes SLOT-REF, SLOT-SET!, $SLOT-REF, $SLOT-SET! to (vicare);
they work on both Vicare structs:
(define-struct color
(red green blue))
(define S
(make-color 1 2 3))
(slot-set! S red color 19)
(slot-set! S green color 29)
(slot-set! S blue color 39)
(slot-ref S red color) => 19
(slot-ref S green color) => 29
(slot-ref S blue color) => 39
and R6RS records:
(define-record-type color
(fields (mutable red)
(mutable green)
(mutable blue)))
(define S
(make-color 1 2 3))
(slot-set! S red color 19)
(slot-set! S green color 29)
(slot-set! S blue color 39)
(slot-ref S red color) => 19
(slot-ref S green color) => 29
(slot-ref S blue color) => 39
Notice that the syntaxes SLOT-REF and SLOT-SET! are re-exported by
(nausicaa): the tags defined by Nausicaa now interface themselves with
these syntaxes.
* Modified syntactic bindings of Vicare struct types and R6RS record
types to allow the identifier name to act as reference to the maker
function with a special syntax; that is, for struct types:
(define-struct color
(red green blue))
(color (1 2 3)) => #["color" 1 2 3]
(apply (color (...)) 1 '(2 3)) => #["color" 1 2 3]
and for R6RS record types:
(define-record-type color
(fields red green blue))
(color (1 2 3))
=> #[r6rs-record: color red=1 green=2 blue=3]
(apply (color (...)) 1 '(2 3))
=> #[r6rs-record: color red=1 green=2 blue=3]
* Added some experimental functions to (vicare):
syntactic-binding-putprop
syntactic-binding-getprop
syntactic-binding-remprop
syntactic-binding-property-list
identifier-bound?
* Added experimental syntax DEFINE-ALIAS to (vicare):
(let ((a 1))
(define-alias b a)
b)
not sure if it is a good thing. Should the full suite of LET-ALIAS
and LET*-ALIAS syntaxes be added?
* Added syntax parameters. See the documentation node "iklib expander
parameters".
* BACKWARDS INCOMPATIBILITY The identifier "__who__" is now a fluid
syntax exported by (vicare). This change should not cause significant
problems: most of the code should just work.
* BEGIN-FOR-SYNTAX is now an alias for EVAL-FOR-EXPAND, to match the
syntax name used by Racket; in truth: EVAL-FOR-EXPAND is now an alias
of BEGIN-FOR-SYNTAX.
* BACKWARDS INCOMPATIBILITY BEGIN-FOR-SYNTAX is now a core syntax and
allows bindings to be defined in a form and referenced in a later one:
(begin-for-syntax
(define a 1))
(begin-for-syntax
(define b 2))
(begin-for-syntax
(define c (+ a b)))
(define-syntax (doit stx)
#`(quote (#,a #,b #,c)))
(doit) => (1 2 3)
this behaviour was not present in the previous EVAL-FOR-EXPAND.
* Added synonym syntax transformers.
* Extended LIBRARY form with OPTIONS clause. Implemented library option
VISIT-UPON-LOADING.
* BACKWARDS INCOMPATIBILITY The libraries in the hierarchy (nausicaa
mehve ---) do not need to be initialised anymore; the INITIALISE-*
functions are not exported anymore.
* BACKWARDS INCOMPATIBILITY The syntax CASE-IDENTIFIERS is now exported
by (vicare), and not more exported by (vicare language-extensions
syntaxes).
* It is now possible to compile individual library files, producing a
single FASL file; one FASL file for each LIBRARY form. To write the
FASL file to the repository:
$ vicare --compile-library libname.sls
the explicitly select an output file name:
$ vicare \
--output libname.vicare-64bit-fasl \
--compile-library libname.sls
* Added command line options --verbose and --silent. By default:
execution is now silent.
* BACKWARDS INCOMPATIBILITY The third (and optional) argument of
EXPAND-LIBRARY now must be a function accepting a R6RS library name as
single argument.
* Added port predicates to (vicare):
binary-input-port? textual-input-port?
binary-output-port? textual-output-port?
binary-input/output-port? textual-input/output-port?
* Added identifier syntaxes "__file__" and "__line__" to (vicare); the
former expands to a string representing the source code location; the
latter expands to a number representing the line number.
* BACKWARDS INCOMPATIBILITY The following libraries have been removed:
(vicare language-extensions identifier-alists)
(vicare language-extensions identifier-properties)
* Added BRACE to (vicare) and brace lists to the reader. A fluid syntax
which is free to be bound to whatever user code needs. When the
Scheme code reader is in Vicare mode: brace lists are read as BRACE
forms as follows:
{} -> (brace)
{1 2 3} -> (brace 1 2 3)
{1 . 2} -> (brace 1 . 2)
* The library (vicare) now exports the TRY syntax; see the documentation
node "iklib syntaxes try".
* The syntaxes LAMBDA*, DEFINE*, CASE-LAMBDA*, CASE-DEFINE* now use the
brace syntax to tag argument and return values with validation
predicates.
* The following libraries do not exist anymore:
(vicare language-extensions infix)
(vicare language-extensions increments)
* The INFIX syntax is now exported by (vicare). See the documentation
for the syntax and supported operators.
* New fluid syntax bindings are exported by (vicare):
? : ! % & ^ ~ << >> ¦
they are recognised as operators by the INFIX syntax.
* BACKWARDS INCOMPATIBILITY In the library (vicare posix), the structure
"struct-stat" has now fields for file times with nanoseconds
resolution; they are used whenever the underlying platform supports
them. The field names are now:
st_atime_nsec
st_mtime_nsec
st_ctime_nsec
and the fields with microseconds resolution:
st_atime_usec
st_mtime_usec
st_ctime_usec
do not exist anymore.
* BACKWARDS INCOMPATIBILITY The command line options regarding open
mvcalls have been removed.
* BACKWARDS INCOMPATIBILITY The command line options about reporting
errors at run-time or compile-time have been removed.
* BACKWARDS INCOMPATIBILITY Removed non-Scheme style syntaxes from
(vicare):
begin-returnable
lambda-returnable
define-returnable
added:
returnable
Notes for revision 0.3d7
------------------------
* Boot images have been rotated.
* Added unsafe operations to (vicare system $vectors):
$vector-map1
$vector-for-each1
$vector-for-all1
$vector-exists1
* Added convenience syntax CASE-DEFINE to (vicare).
(case-define who ?cl-clause0 cl-clause ...)
==> (define who (case-lambda ?cl-clause0 ?cl-clause ...))
* Added to (vicare) the syntaxes:
let-constants
let*-constants
letrec-constants
letrec*-constants
like LET, LET*, LETREC, LETREC* but create immutable bindings.
* Added to (vicare) the experimental syntaxes LAMBDA*, DEFINE*,
CASE-LAMBDA*, CASE-DEFINE*. See the documentation nodes "iklib
syntaxes lambdas" and "iklib syntaxes defines".
* Added to (vicare) BYTEVECTOR-HASH using the same algorithm of
STRING-HASH.
* When the syntax DEFINE/TAGS from (nausicaa) is used for function
definition, the body forms are enclosed in a LET syntax as follows:
(let-constants ((__who__ (quote ?id))) ?body0 ?body ...)
so the binding "__who__" is available in the body forms to reference a
symbol representing the function's name; this is useful when raising
exceptions with condition type "&who". Such non-hygienic definition
looks non-Schemey, but in many places in the code there is the
pattern:
(define (doit . args)
(define who 'doit)
---)
to make the name of the function available; such definitions can now
be cleared.
* Added CASE-DEFINE to (nausicaa) and CASE-DEFINE/TAGS to (nausicaa
language oopp).
* Added experimental nested method invocation. When a method
specification has a single tagged return value, the following syntax
is available:
(define-label <alpha>
(method ((one <list>) self a b)
(list self a b)))
(let (((O <alpha>) 0))
(O one 10 20
=> map add1)) => '(1 11 21)
(let (((O <alpha>) 0))
(O one 10 20
=> map add1
=> fold-left 0 +)) => (+ 1 11 21)
(let (((O <alpha>) 0))
(O one 10 20
=> map add1
=> map -
=> fold-left 0 +)) => (+ -1 -11 -21)
This is not Schemey at all, but many languages have similar syntaxes.
* Added experimental nested getter syntax. The getter transformer might
accept additional forms to use tag members from the runtime getter
value.
(define-label <fixnum-vector>
(parent <vector>)
(getter
(lambda (stx)
(syntax-case stx (=>)
((?var ((?index)))
#'(vector-ref ?var ?index))
((?var ((?index)) => ?form0 ?form ...)
#'(let (((fx <fixnum>) (?var[?index])))
(fx ?form0 ?form ...)))
))))
(let (((O <fixnum-vector>) '#(0 1 2 3)))
(O[1] => string))
=> "1"
(let (((O <fixnum-vector>) '#(0 1 2 3)))
(O[1] => odd?))
=> #t
(let (((O <fixnum-vector>) '#(0 1 2 3)))
(O[2] => * 10))
=> 20
* BACKWARDS INCOMPATIBILITY In the (nausicaa) language, the "<-"
auxiliary syntax is no more used by DEFINE/TAGS, LAMBDA/TAGS and
CASE-LAMBDA/TAGS to specify validation tags for returned values. So
these are now syntax errors:
(define fun
(lambda ((O <pair>))
(<- <vector>)
(vector (O car) (O cdr))))
(define (fun (O <pair>))
(<- <vector>)
(vector (O car) (O cdr)))
(define fun
(case-lambda
(((O <pair>))
(<- <vector>)
(vector (O car) (O cdr)))))
we can use the following instead:
(define fun
(lambda ((_ <vector>) (O <pair>))
(vector (O car) (O cdr))))
(define ((fun <vector>) (O <pair>))
(vector (O car) (O cdr)))
(define fun
(case-lambda
(((_ <vector>) (O <pair>))
(vector (O car) (O cdr)))))
* BACKWARDS INCOMPATIBILITY Some parser functions for IPv4 and IPv6
addresses from the hierarchy (nausicaa parser-tools ---) now return a
vector rather than a list.
* BACKWARDS INCOMPATIBILITY Some constructor functions for IPv4 and IPv6
address labels from the hierarchy (nausicaa net addresses ---) now
accept a vector as argument rather than a list.
* BACKWARDS INCOMPATIBILITY The function URI-NORMALISE-ENCODING has been
renamed to NORMALISE-URI-ENCODING.
* BACKWARDS INCOMPATIBILITY The libraries for parsing IP addressing have
been reorganised and partly rewritten.
* Imported URI libraries from Nausicaa as:
(nausicaa parser-tools uri ---)
(nausicaa uri ---)
* Imported file system pathname libraries from Nausicaa as:
(nausicaa parser-tools unix-pathnames)
(nausicaa uri pathnames ---)
* Imported the Mehve language. A new master documentation file has been
added, "mehve.texi".
Notes for revision 0.3d6
------------------------
* Added libraries:
(nausicaa language simple-match)
(nausicaa language infix)
with similar API of the corresponding libraries in the hierarchy
(vicare ---), but recognising identifiers exported by the libraries
in the hierarchy (nausicaa language ---) as auxiliary syntaxes.
* Imported IPv4 and IPv6 address libraries from Nausicaa as:
(nausicaa parser-tools ipv4-addresses)
(nausicaa parser-tools ipv6-addresses)
(nausicaa net addresses ipv4)
(nausicaa net addresses ipv6)
* Added LET*-SYNTAX to (vicare):
(let*-syntax () ?body)
==> (begin () ?body)
(let*-syntax ((?lhs ?rhs)) ?body)
==> (let-syntax ((?lhs ?rhs)) ?body)
(let*-syntax ((?lhs0 ?rhs0) (?lhs ?rhs) ...) ?body)
==> (let-syntax ((?lhs0 ?rhs0))
(let*-syntax ((?lhs ?rhs) ...) ?body))
Notes for revision 0.3d5
------------------------
* The boot images have been rotated.
* BACKWARDS INCOMPATIBILITY The function MAKE-QUEUE from (vicare) has
been renamed MAKE-QUEUE-PROCS.
* Imported libraries from Nausicaa/OOPP. Installation of the library
hierarchy (nausicaa ---) is enabled by default; it can be disabled
with the option "--disable-nausicaa" of the script "configure".
* Documentation is now split into 3 files: "vicare-scheme.texi",
"vicare-libs.texi", "nausicaa.texi".
* Added condition object type "&procedure-argument-violation" to
(vicare).
* Added condition object type "&expression-return-value-violation" to
(vicare).
* The validation clauses of the library (vicare arguments validation)
now use PROCEDURE-ARGUMENT-VIOLATION to raise the error, rather than
ASSERTION-VIOLATION.
* Added syntaxes to (vicare) to allow access to R6RS record fields
through the record type identifier only.
record-type-field-ref
record-type-field-set!
$record-type-field-ref
$record-type-field-set!
* Added syntax "record-type-and-record?" to (vicare) to allow testing
the type of a record instance through the record type identifier only.
* Added to (vicare):
exact-integer?
bignum-positive?
bignum-negative?
bignum-non-negative?
bignum-non-positive?
bignum-odd?
bignum-even?
least-positive-bignum
greatest-negative-bignum
* Added to (vicare) the experimental syntax "define-syntax*". Still
undocumented.
* Added to (vicare) the function "vector-empty?" and to (vicare system
$vectors) the operation "$vector-empty?".
* Added to (vicare) the function "string-empty?" and to (vicare system
$strings) the operation "string-empty?".
* Added to (vicare) the function "bytevector-empty?" and to (vicare
system $bytevectors) the operation "$bytevector-empty?".
* Added "eval-for-expand" to (vicare).
* Added to (vicare system $numerics):
$add1-integer $add1-fixnum $add1-bignum
$sub1-integer $sub1-fixnum $sub1-bignum
* Fixes, reorganisation and development of string and bytevector
pathname functions. Added to (vicare $posix):
split-pathname-root-and-tail
search-file-in-environment-path
search-file-in-list-path
split-pathname
split-pathname-bytevector
split-pathname-string
split-search-path
split-search-path-bytevector
split-search-path-string
file-absolute-pathname?
file-relative-pathname?
file-pathname?
file-string-pathname?
file-bytevector-pathname?
file-colon-search-path?
file-string-colon-search-path?
file-bytevector-colon-search-path?
which are reexported by (vicare posix).
* Added special validation clause:
(or false ?validator)
to the arguments validation library.
* Added library (vicare language-extensions increments).
* Added to Nausicaa classes a syntax to select concrete fields using the
R6RS records' unsafe accessors and mutators.
* Added to Nausicaa the validation of values returned by code forms,
through "begin/tags", "lambda/tags" and "define/tags".
* Added builtin label "<exact-integer>" to (nausicaa).
* Added containers libraries:
(nausicaa containers lists)
(nausicaa containers vectors)
(nausicaa containers strings)
(nausicaa containers arrays)
the multidimensional arrays library will be rewritten with changes in
the API.
* Added INFIX to the export list of (nausicaa).
* The wrapper for foreign pointers now defines also a "?TYPE-ID-hash"
function to generate hashtable keys associated to wrapper structures.
* Imported from Nausicaa the libraries:
(vicare language-extensions identifier-alists)
(vicare language-extensions identifier-properties)
(vicare language-extensions makers)
* Imported stacks library from Nausicaa as libraries:
(vicare containers stacks)
(nausicaa containers stacks)
* Imported queues library from Nausicaa as libraries:
(vicare containers queues)
(nausicaa containers queues)
* Imported iterators library from Nausicaa as:
(nausicaa containers iterators)
* Imported SILex libraries from Nausicaa as:
(vicare parser-tools silex ---)
* Imported LALR libraries from Nausicaa as:
(nausicaa parser-tools lalr ---)
Notes for revision 0.3d4
------------------------
* Strings loaded from FASL files (but not the boot image) are now
interned.
* Added CASE-IDENTIFIERS to (vicare langauge-extensions syntaxes).
* Added callable objects as library (vicare language-extensions
callables), see the documentation node "callables".
* Added environment inquiry functions to (vicare):
uname
utsname?
utsname-sysname
utsname-nodename
utsname-release
utsname-version
utsname-machine
implementation-name
implementation-version
cpu-architecture
machine-name
os-name
os-version
* Added SRFI 112 libraries:
(srfi :112)
(srfi :112 environment-inquiry)
* Imported one-dimension libraries from Nausicaa as (vicare containers
one-dimension-cc) and (vicare containers one-dimension-co).
* Imported u8 and s8 bytevectors libraries from nausicaa under the
hierarchy (vicare containers bytevectors ---).
* Imported getopts library from Nausicaa as (vicare getopts).
* Imported enumerations library from Nausicaa as (vicare
language-extensions c-enumerations).
* Imported formations library from Nausicaa as (vicare formations).
Notes for revision 0.3d3
------------------------
* Added to (vicare) functions to inspect configuration time options:
vicare-built-with-srfi-enabled
vicare-built-with-ffi-enabled
vicare-built-with-iconv-enabled
vicare-built-with-posix-enabled
vicare-built-with-glibc-enabled
vicare-built-with-linux-enabled
and to (srfi :0) the associated COND-EXPAND clauses:
srfi-enabled
ffi-enabled
iconv-enabled
posix-enabled
glibc-enabled
linux-enabled
* Added utility functions for macro authoring, see the documentation
node "iklib expander utils".
* Added miscellaneous functions to (vicare):
char-in-ascii-range?
fixnum-in-character-range?
* Fixed (vicare language-extensions infix) exporting its own binding for
XOR; it now reexports the binding from (vicare).
* Added libraries:
(srfi :111)
(srfi :111 boxes)
* SRFI 106: added function SOCKET-DESCRIPTOR; added garbage collector
destructor to the socket object.
* BACKWARDS INCOMPATIBILITY The library (vicare bytevectors) has been
renamed to (vicare containers bytevectors).
* Fixed error in weak hashtables not handling correctly already interned
keys.
* Imported IrRegex from Nausicaa as (vicare irregex).
* Imported Pregexp from Nausicaa as (vicare pregexp).
* Imported variables library from Nausicaa as (vicare
language-extensions variables).
* Imported lists library from Nausicaa as (vicare containers lists).
* Imported vectors library from Nausicaa as (vicare containers vectors).
* Imported strings library from Nausicaa as (vicare containers strings).
* Imported char-sets library from Nausicaa as (vicare containers
char-sets).
* Imported KMP library from Nausicaa as (vicare containers
knuth-morris-pratt).
* Imported Levenshtein Distance library from Nausicaa as (vicare
containers levenshtein).
* Imported streams library from Nausicaa as (vicare language-extensions
streams).
* Imported loops library from Nausicaa as (vicare language-extensions
loops).
* Imported ASCII chars library from Nausicaa as (vicare
language-extensions ascii-chars).
* Imported comparisons library from Nausicaa as (vicare