forked from shirok/Gauche
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
17296 lines (12459 loc) · 649 KB
/
ChangeLog
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
2015-07-23 Shiro Kawai <[email protected]>
* src/libnum.scm, src/number.c, src/bignum.c: Various fixes from
Takeshi Abe: Fix 'exact' for integer around SCM_SMALL_INT_MAX and
LONG_MAX; RnRS conformance on (negative? +nan.0), (expt 0 z),
(magnitude exact-number).
2015-07-19 Shiro Kawai <[email protected]>
* lib/data/random.scm (samples$): Added.
2015-07-18 Shiro Kawai <[email protected]>
* lib/gauche/cgen/stub.scm: Avoid generated code from being warned
for unused variables or unused labels.
2015-07-17 Shiro Kawai <[email protected]>
* src/port.c (Scm_OpenFilePort): Fix an issue that port-tell doesn't
return the size of the file write after opening it in append mode.
2015-07-14 Shiro Kawai <[email protected]>
* lib/gauche/interactive.scm (%reader): In REPL, read ahead trailing
whitespace characters including the first newline after an sexpr;
It's been a source of confusion that typing (read-char) or (read-line)
on REPL read the trailing newline.
2015-07-13 shiro <[email protected]>
* lib/gauche/cgen/cise.scm (funcall): Add to allow the case
when calling a function computed at runtime.
2015-07-10 Shiro Kawai <[email protected]>
* lib/gauche/lazy.scm: Add lappend-map
* libsrc/gauche/generator.scm: Add gflatten
2015-07-05 Shiro Kawai <[email protected]>
* lib/text/csv.scm: Add make-csv-header-parser, make-csv-record-parser,
csv-rows->tuples. NB: We removed <csv> definition, for it was
never used.
2015-07-02 Shiro Kawai <[email protected]>
* ext/tls: Inhibit building & running ssltest when --disable-threads,
since the test program requires thread support. Ideally, even
we say --disable-threads, the test program should be able to
use threads as long as the system has it; but that requires more
trick in build process, so this is a temporary remedy.
2015-06-30 Shiro Kawai <[email protected]>
* lib/gauche/interactive/toplevel.scm: Start adding Scheme48-style
REPL toplevel commands. Will play with this for a while to see
how it works.
2015-06-27 Shiro Kawai <[email protected]>
* src/write.c, src/libio.scm, src/gauche/port.h:
Step 2 of improving writer. Rename port->recursiveContext
to port->writeState.
2015-06-26 Shiro Kawai <[email protected]>
* src/write.c, src/libio.scm, src/gauche/priv/writerP.h:
Step 1 of improving writer. Made recursive context into an
instance of <write-state>.
2015-06-25 Shiro Kawai <[email protected]>
* lib/text/console.scm: Add call-with-console to abstract console
mode handling
* doc/modutil.texi: Document text.console.
2015-06-20 Shiro Kawai <[email protected]>
* src/regexp.c: Add RE_ANYR, RE_MATCH1R and RE_MATCHR to support
the patterns like #/.+/ efficiently. We should be able to
avoid backtrakcking for all rep-while case, but if the repeated
element has structure, we'll need another instruction ("if the
next immediate element fails, reset input and continue") that
requires some modification in VM (we have to save the input pos
without consuming stack), so we'll put it off for future.
2015-06-19 Shiro Kawai <[email protected]>
* lib/gauche/computil.scm (make-tuple-comparator): Added.
2015-06-09 Shiro Kawai <[email protected]>
* src/libnum.scm (fixnum-width): Fix - been misunderstood r6rs spec.
2015-05-29 Shiro Kawai <[email protected]>
* lib/data/cache.scm: Added.
2015-05-21 Shiro Kawai <[email protected]>
* src/libsys.scm (sys-setgroups): Added.
2015-05-20 Shiro Kawai <[email protected]>
* src/compile.scm: Save closure arginfo to ScmCompiledCode.
Taking procedure-info of the closure now returns not only
the procedure name, but procedure name + formals.
2015-05-17 Shiro Kawai <[email protected]>
* src/system.c (nanosleep), src/gauche/system.h (struct timespec):
Workaround for the mingw timespec incompatibility.
2015-05-14 Shiro Kawai <[email protected]>
* src/load.c (Scm_LoadFromCString): Added.
2015-05-12 Shiro Kawai <[email protected]>
* gc/darwin_stop_world.c: Backported iOS 8 support from bdwgc
upstream.
* configure.ac, gc/configure.ac: The above change requires to link
CoreFoundation on darwin. (The upstream bdwgc doesn't have
this modification, so there may be another way; if we figure it
out, we might revert this change.)
2015-05-10 Shiro Kawai <[email protected]>
* lib/gauche/cgen/unit.scm (gauche.cgen.unit): Renamed and moved
c-safe-string-literal to here as cgen-safe-string, for the
consistency.
2015-05-08 Shiro Kawai <[email protected]>
* lib/gauche/cgen/literal.scm (<cgen-scheme-integer>): Fix
cross-compiling issue - we may generate code for 32bit architecure
using 64bit gosh.
2015-05-01 Shiro Kawai <[email protected]>
* src/gauche.h (SCM_NORETURN): Allow using
__attribute__((__noreturn__)) in gcc.
* lib/gauche/cgen/cise.scm (define-cfn): Allow :inline qualifier.
2015-04-25 Shiro Kawai <[email protected]>
* lib/gauche/interactive/ed.scm (ed): Add 'ed' in REPL.
2015-04-24 Shiro Kawai <[email protected]>
* src/libeval.scm (%exit): Allow arbitrary Scheme objects for
the argument, to conform r7rs.
2015-04-21 Shiro Kawai <[email protected]>
* lib/gauche/vm/profiler.scm (profiler-show-load-stats): Fix a bug
that didn't exclude time for subloads. Patch from Duy Nguyen.
2015-04-20 Shiro Kawai <[email protected]>
* lib/gauche/interactive.scm (describe): Show the source location
for a procedure, if available.
2015-04-13 Shiro Kawai <[email protected]>
* lib/rfc/mime.scm -> libsrc/rfc/mime.scm,
ext/rfc: Precompile rfc.mime.
2015-04-12 Shiro Kawai <[email protected]>
* lib/rfc/json.scm: Updated to follow rfc7159 (allow any value
on the toplevel of json).
2015-04-10 Shiro Kawai <[email protected]>
* src/genconfig.in: Allow multiple arguments to gauche-config
for the convenience.
2015-04-09 Shiro Kawai <[email protected]>
* lib/gauche/record.scm -> libsrc/gauche/record.scm,
ext/gauche/Makefile.in: Precompile gauche.record
* src/libsym.scm (identifier-append): Added (experimental)
2015-04-08 Shiro Kawai <[email protected]>
* lib/srfi-78.scm: Added.
2015-04-04 Shiro Kawai <[email protected]>
* src/libsym.scm (symbol-append): Added.
2015-03-31 Shiro Kawai <[email protected]>
* libsrc/gauche/sequence.scm (common-prefix, common-prefix-to): Added.
2015-03-30 Shiro Kawai <[email protected]>
* src/compile.scm (er-comparer): Check if args are variable; without
this check, compiler barfs with assertion failure if the user passes
non-variable arg to 'compare' proc of er-transformer.
2015-03-28 Shiro Kawai <[email protected]>
* src/compile.scm (pass5/emit-local-env-jump),
src/vminsn.scm (LOCAL-ENV-SHIFT, BOX),
src/vm.c (local_env_shift): Improvement of the last commit - instead
of changing BOX behavior to add another 'mode', we split
LOCAL-ENV-JUMP insn to LOCAL-ENV-SHIFT + JUMP, and insert boxing
operatins inbetween when necessary. If there's no mutable variable
in the frame, we use LOCAL-ENV-JUMP as before.
2015-03-27 Shiro Kawai <[email protected]>
* src/compile.scm (pass5/prepare-args, pass5/box-mutable-lvars):
Fix incorrect insertion of BOX instruction. The mutable variable
in local environment must be BOXed after all the values in the
env are evaluated, otherwise the result would be incorrect if
a continuation is captured in one of the init expression of
the variable and restarted. See the added test in test/dynwind.scm
to reproduce the issue. Thansk to @gengar68 for finding the bug.
* src/vminsn.scm (BOX): We enhanced BOX insn with negative parameter;
we need to support both cases of the env frame is already created
and is yet to be created.
2015-03-21 Shiro Kawai <[email protected]>
* src/gauche-package.in, ext/template.DIST: Retire DIST script;
we no longer need autoconf (DIST gen), and DIST tgz is handled
by 'gauche-package make-tarball'.
2015-03-20 Shiro Kawai <[email protected]>
* lib/gauche/package/util.scm (find-package-name-and-version): Added.
* lib/gauche/package/build.scm, src/gauche-package.in:
Added "make-tarball" command; this will replace "DIST tgz".
2015-03-19 Shiro Kawai <[email protected]>
* lib/util/dominator.scm: Added. (NB: If we have enough graph-related
libraries, we may want to have util.graph.* subcategory).
2015-03-14 Shiro Kawai <[email protected]>
* lib/rfc/http.scm (http-status-code->description): Added.
2015-03-09 Shiro Kawai <[email protected]>
* ext/tls/tls.scm (make-tls): Expose flags and num-sessions argument
of ssl_ctx_new to Scheme. Useful for debugging by giving
SSL_DISPLAY_BYTES and/or SSL_DISPLAY_STATES, for example.
* lib/rfc/uri.scm (uri-ref): added.
2015-03-07 Shiro Kawai <[email protected]>
* gc/libatomic_ops/src/atomic_ops/sysdeps/gcc/mips.h:
mips64el support. Patch from James Cogwill.
* src/gauche/priv/portP.h: Fix race condition in PORT_UNLOCK
by adding a memory barrier. Patch from James Cogwill.
2015-03-06 Shiro Kawai <[email protected]>
* ext/sparse/sparse.scm: Add sparse matrix.
2015-03-04 Shiro Kawai <[email protected]>
* ext/sparse/spvec.c: Add default value to sparse vectors.
2015-02-24 Shiro Kawai <[email protected]>
* lib/gauche/cgen/cise.scm: Renamed cgen-context to cgen-ambient,
for the term 'context' is also used in the local C context
(toplevel, stmt, expr) and confusing.
2015-02-22 Shiro Kawai <[email protected]>
* lib/gauche/cgen/stub.scm: During expanding stub procedures
(define-cproc etc) we set up a custom cise context to override
"return" macro; so that we can say (return something) safely
in the stub procedures, instead of (result something), which
is somewhat awkward. The difference from C return is that
it can handle multiple return values.
Note that this 'return' macro really behaves like return---it
skips the rest of the procedure, unlike the 'result' macro that
merely assigns SCM_RESUT values. The code that relies the
'result' macro to continue execution (which is a bad habit)
can't just replace 'result' to 'return'.
2015-02-11 Shiro Kawai <[email protected]>
* ext/net/netaux.scm (make-server-sockets): Handle the case when
port is 0. Also avoid using cond-expand, for this file can be
precompiled on different platform than the target.
2015-02-10 Shiro Kawai <[email protected]>
* ext/net/netaux.scm (make-server-socket): Allow passing multiple
ports and let the function choose an available one.
2015-02-03 Shiro Kawai <[email protected]>
* lib/gauche/common-macros.scm (and-let1): Allow multiple exprs
in body. Added doc (so it's official).
2015-02-01 Shiro Kawai <[email protected]>
* lib/gauche/common-macros.scm (and-let1): Added experimentally.
I feel that I wrote single-binding and-let* enough times.
2015-01-31 Shiro Kawai <[email protected]>
* ext/vport/vport.scm (open-input-char-list, open-input-byte-list):
Added list ports.
* src/liblazy.scm (port->char-lseq, port->byte-lseq, port->string-lseq)
(port->sexp-lseq): Added for the convenience.
2015-01-30 Shiro Kawai <[email protected]>
* src/prof.c (Scm_ProfilerStart): Use Scm_TmpDir to get temporary
directory, instead of hardcoding "/tmp".
2015-01-29 Shiro Kawai <[email protected]>
* src/portapi.c (Scm_UngottenChars, Scm_UngottenBytes): API
to retrieve bufferd chars/bytes. Note that the current getc-ungetc
API may be changed in future, so don't rely on these too much.
(The semantics of "ungetting" isn't well defined, especially when
binary i/o and character i/o are mixed.)
* src/libio.scm (%port-ungotten-chars, %port-ungotten-bytes):
Exposing above in gauche.internal module.
2015-01-24 Shiro Kawai <[email protected]>
* lib/text/gap-buffer (text.gap-buffer): Added experimentally.
2015-01-17 Shiro Kawai <[email protected]>
* src/number.c (Scm_GetIntegerUMod): Added - a convenience routine to
extract lower u_long bits from an exact integer.
2015-01-15 Shiro Kawai <[email protected]>
* lib/srfi-69.scm, src/srfis.scm, test/srfi.scm, doc/modsrfi.texi:
Added srfi-69 support.
2015-01-14 Shiro Kawai <[email protected]>
* lib/gauche/record.scm: Fix a bug when there's one argument
given to the custom constructor.
* src/libvec.scm (%uvector-ref), src/vector.c (Scm_VMUVectorRef):
Fixed a bug that leaked #<unbound>. Patch from wasao.
2015-01-09 Shiro Kawai <[email protected]>
* src/compare.c (comparator_compare): Make equal? to compare
comparator's elements.
2015-01-08 Shiro Kawai <[email protected]>
* lib/srfi-113.scm: Added srfi-113.
2015-01-07 Shiro Kawai <[email protected]>
* src/error.c (Scm_ReportError), src/libexc.scm (report-error):
Added optional sink argument to specify where the message go.
We want to change C API Scm_ReportError accordingly; to keep
0.9 ABI compatibility, there's some transient code in place.
2015-01-06 Shiro Kawai <[email protected]>
* src/compare.c (Scm_Compare): Handle comparison of different
type of objects even if their types are not the one mentioned
in srfi-114.
2015-01-02 Shiro Kawai <[email protected]>
* doc/corelib.texi (report-error): Documented.
2014-12-31 Shiro Kawai <[email protected]>
* ext/threads/threads.c (make-thread): Set custom-error-reporter
of newly created thread to suppress the default error message;
the unhandled error (which causes error message by default)
should be handled by the caller of thread-join!. If one wants
to report an error within the thread, use guard and report-error.
* src/libeval.scm (%vm-custom-error-reporter-set!): Renamed from
vm-set-custom-error-reporter, and moved to gauche.internal module.
This is something you don't need to touch daily, so no reason to
expose it by default.
* src/vm.c (Scm_VMDefaultExceptionHandler),
src/error.c (Scm_ReportError): Instead of calling
vm->customErrorHandler in Scm_ReportError, we lifted the check
to Scm_VMDefaultExceptionHandler; if vm->customErrorHandler is
set, it is called directly, and Scm_ReportError always print
the default message and stack trace. This seems the sane way
to do it - we don't remember why we chose to dispatch inside
Scm_ReportError initially.
* ext/threads/threads.c (Scm_MakeThread): Do not alter
customErrorReporter in the new thread. Instead, we just drop
call of Scm_ReportError in thread_entry. If the programmer
needs the thread to report error, she can call report-error
within guard clauses.
2014-12-30 Shiro Kawai <[email protected]>
* src/gauche/vm.h: INCOMPATIBLE CHANGE: Renamed
ScmVM.defaultEscapeHandler for customErrorReporter. The name was
misleading as if it would handle escaping situation caused by
exceptions; in fact, we have totally separate mechanism to handle
exceptions, and the said slot is merely called by Scm_ReportError,
which is the default action when the exception isn't handled at
all.
ABI compatibility is kept, but any extension code that refers to
this slot would break. Since this is undocumented niche feature,
we hope this won't affect much.
* src/libeval.scm: vm-set-default-exception-handler becomes
vm-set-custom-error-reporter, as well.
2014-12-27 Shiro Kawai <[email protected]>
* lib/Makefile.in: Don't forget to install srfi-18.scm
* ext/threads/threads.scm: Re-export current-thread
2014-12-23 Shiro Kawai <[email protected]>
* src/module.c: Introduced gauche.keyword module to allow R7RS
modules to use keyword default bindings. See the comment.
2014-12-21 Shiro Kawai <[email protected]>
* src/load.c: Support '.sld' suffix by default.
2014-12-18 Shiro Kawai <[email protected]>
* configure.ac, ext/*/*.ac, src/Makefile/in, src/genconfig.in:
Add --static-libs option to gauche-config, which lists all
libraries needed for statically linked binary.
2014-12-17 Shiro Kawai <[email protected]>
* lib/gauche/macroutil.scm (with-renaming): Experimentally added
a utility to construct the result form within er macro transformer.
NB: The old undocumented macros defined in macroutil.scm are removed,
for they aren't used much after all.
2014-12-14 Shiro Kawai <[email protected]>
* lib/gauche/cgen/unit.scm (cgen-safe-name{-friendly}): Allow ':'
to be in C name, so that we can call C++ namespace-qualified
functions.
2014-12-13 Shiro Kawai <[email protected]>
* lib/data/heap.scm (binary-heap-swap-{min|max}!): Added.
2014-12-12 Shiro Kawai <[email protected]>
* lib/gauche/configure.scm (parse-command-line-arguments):
Made ./configure -V|version option output the package name and
the package version in the same format as autoconf-generated
configure scripts.
2014-12-09 Shiro Kawai <[email protected]>
* libsrc/gauche/sequence.scm (break-list-by-sequence)
(break-list-by-sequence!): Added.
2014-12-07 Shiro Kawai <[email protected]>
* ext/sparse/sparse.scm: Added missing generic ref and
call-with-iterator methods.
* libsrc/util/match.scm (in): Fixed a bug that emits incorrect
matching code. See addition in ext/util/test.scm for the
specific pattern to exhibit this bug.
2014-12-06 Shiro Kawai <[email protected]>
* lib/gauche/dictionary.scm (dict-clear!): Added missing export.
2014-12-05 Shiro Kawai <[email protected]>
* libsrc/gauche/sequence.scm (sequence-contains): Renamed for clarity.
(sequence->kmp-stepper): Expose KMP search element.
2014-12-01 Shiro Kawai <[email protected]>
* src/gauche/vm.c (ScmIdentifier):
* src/compaux.scm (Scm_MakeIdentifier, Scm_OutermostIdentifier)
(Scm_UnwrapIdentifier, Scm_IdentifierGlobalBinding):
Allow nested identifier, that is, identifier to wrap another
identifier. Will be needed to support nested hygienic macros.
This changes the signature of Scm_MakeIdentifier, so
various files are touched to accomodate it.
2014-11-30 Shiro Kawai <[email protected]>
* libsrc/gauche/sequence.scm (sequence-scan): Added.
2014-11-29 Shiro Kawai <[email protected]>
* lib/data/trie.scm (trie-longest-match): Added.
2014-11-26 Shiro Kawai <[email protected]>
* src/libcode.scm (compiled-code-push-info!): Added.
* src/compile.scm (pass5/lambda): Add 'definition debug info
to the compiled code created by $LAMBDA node.
(pass1/define): Attach original source code info to
the transformed lambda form.
* lib/gauche/procedure.scm (source-code, source-location): Added.
2014-11-25 Shiro Kawai <[email protected]>
* src/error.c (Scm_Warn), src/libmisc.scm (warn): Allow suppressing
warning by environment variable GAUCHE_SUPPRESS_WARNING.
2014-11-18 Shiro Kawai <[email protected]>
* gc/pthread_support.c (start_mark_threads): Experimantally added
code to set up signal masks for parallel marker threads. Eventually
this should be more generalized API and submitted to upstream,
but for the time being, let's see if this solves the "lost signal"
problem (the issue that delivered signal is discarded when it's
delivered to one of the marker threads instead of Gauche threads.)
2014-11-12 Shiro Kawai <[email protected]>
* src/gauche/port.h (SCM_PORT_CASE_FOLDING): Renamed the macro name
from SCM_PORT_CASE_FOLD, which is the same name for the flag name
and could be confusing.
2014-11-11 Shiro Kawai <[email protected]>
* src/main.c: Enable -fcase-fold in REPL mode, too (we only had it
work on scripts).
* src/port.c (Scm_GetPortCaseFolding, Scm_SetPortCaseFolding): APIs
to get/set port's case folding mode.
2014-11-10 Shiro Kawai <[email protected]>
* lib/r7rs.scm (r7rs-import): Warn when a programmer say
(import (gauche)) in r7rs program. It's probably the first
attempt for her to use Gauche's builtin bindings in r7rs programs,
and it's better to guide her to (import (gauche base)).
* src/srfis.scm: For built-in srfi modules, make public symbols
exported so that r7rs programs can see them with (import (srfi N)).
From Gauche programs, those symbols are visible by default since
the module inherits the gauche module, so we haven't been careful
about exports. However, with r7rs programs we need to set them up
correctly.
2014-11-08 Shiro Kawai <[email protected]>
* ext/tls: Upgraded to axTLS-1.5.0.
2014-11-07 Shiro Kawai <[email protected]>
* src/gauche/char_utf_8.h (Scm__CharIsExtraWhiteSpace): Do not treat
U+180e as a whitespace char. It was changed from Zs to Cf in
Unicode 6.3.0. (NB: We also need update char_attr.[ch] for
char-general-category to reflect the change.)
2014-11-05 Shiro Kawai <[email protected]>
* lib/gauche/test.scm (test*): Rewrote using er-macro so that
importing only 'test*' but not 'test' will still work.
* src/compile.scm (pass1/define): Rename toplevel identifier inserted
by a macro, to keep hygiene. RnRS does not specify this behavior
and implementations make different choices, but it seems that this
is the most straightforward way for Gauche to do the right thing.
Note that the code relying the (officially undefined) behavior,
that macro-injected toplevel binding appear in the macro calling
module, will break with this change.
2014-11-04 Shiro Kawai <[email protected]>
* lib/gauche/test.scm (test-none-of): Added.
2014-11-02 Shiro Kawai <[email protected]>
* src/compile.scm (%make-er-transormer),
lib/gauche/common-macros.scm (er-macro-transformer): Added to
give a shot.
* src/libmod.scm (global-identifier=?, free-identifier=?): Moved
from compile.scm
2014-10-30 Shiro Kawai <[email protected]>
* src/number.c (Scm_MinMax): Return NaN if any of the arguments is NaN.
2014-10-28 Shiro Kawai <[email protected]>
* lib/gauche/numerical.scm (encode-float): Added.
2014-10-27 Shiro Kawai <[email protected]>
* lib/gauche/lazy.scm: Added linterweave.
2014-10-25 Shiro Kawai <[email protected]>
* src/port.c: Experimentally allow access port information as
slots.
2014-10-23 Shiro Kawai <[email protected]>
* src/libdict.scm (combine-hash-value): Expose internal COMBINE
to be used from other places. Not sure yet if this is general
enough, so for the time being this is EXPERIMENTAL.
2014-10-22 Shiro Kawai <[email protected]>
* lib/data/trie.scm: Renamed util.trie -> data.trie.
2014-10-21 Shiro Kawai <[email protected]>
* lib/data/heap.scm: Added find/remove!/delete! operations.
2014-10-20 Shiro Kawai <[email protected]>
* lib/data/heap.scm: Using backing storage vector from element 0,
by offsetting the index. It is simpler in terms of API, and
in the long run it will win.
2014-10-19 Shiro Kawai <[email protected]>
* lib/gauche/sortutil.scm (sorted?): Fixed a bug - the condition of
(sorted? (... x y ...)) should be (not (less? y x)) for every
consecutive pairs, instead of (less? x y). For example,
(sorted? '(1 1) <) should be #t.
* lib/gauche/sortutil.scm, lib/gauche/generic-sortutil.scm:
Accept comparators as well as less-than procedure.
2014-10-18 Shiro Kawai <[email protected]>
* lib/gauche/vecutil.scm (vector-tabluate): Made it restart-safe.
(reverse-list->vector): Implement in core instead of srfi-43.
* test/vector.scm: Added.
2014-10-17 Shiro Kawai <[email protected]>
* lib/gauche/computil.scm: Changed make-field-comparator to
make-key-comparator, for the consistency.
2014-10-16 Shiro Kawai <[email protected]>
* lib/gauche/computil.scm: Added make-reverse-comparator,
make-field-comparator, make-car-comparator and make-cdr-comparator.
2014-10-13 Shiro Kawai <[email protected]>
* lib/data/heap.scm: EXPERIMENTAL: Added binary min-max heap.
2014-10-11 Shiro Kawai <[email protected]>
* ext/sparse/*: Renamed util.sparse -> data.sparse.
2014-10-10 Shiro Kawai <[email protected]>
* src/libcmp.scm: Add srfi-114 primitive applicators as SUBR,
for the performance.
* lib/gauche/cgen/cise.scm: Make logand, logior and logxor n-ary.
2014-10-09 Shiro Kawai <[email protected]>
* ext/sparse/sparse.scm: Allow make-sparse-table to take comparator.
Add sparse-table-comparator and sparse-vector-comparator to
conform new dictionary protocol.
2014-10-08 Shiro Kawai <[email protected]>
* lib/gauche/dictionary.scm (dict-comparator): A new dictionary
protocol API to retrieve a comparator. It is useful to implement
generic meta-operations on dictionaries.
2014-10-07 Shiro Kawai <[email protected]>
* src/libdict.scm (%make-tree-map),
lib/gauche/treeutil.scm (make-tree-map): Save a comparator
instead of closure in core->data field.
* src/libdict.scm (tree-map-comparator): Added to retrieve
the comparator.
2014-10-06 Shiro Kawai <[email protected]>
* lib/gauche/treeutil.scm (make-tree-map): Allow to take a
comparator.
2014-10-05 Shiro Kawai <[email protected]>
* src/hash.c, src/libdict.scm: Support general hash table
using comparators.
2014-10-04 Shiro Kawai <[email protected]>
* src/libproc.scm (applicable?): Moved from lib/gauche/procedure.scm.
Needed in core in order to construct built-in comparators.
* src/libalpha.scm (case-lambda-info): Encapsulate interpretation
of case-lambda dispatch vector in this procedure, so that other
parts won't depend on the structure of the dispatch vector.
* lib/gauche/procedure.scm (disasm): Changed accordingly.
2014-10-03 Shiro Kawai <[email protected]>
* src/libsys.scm (sys-sleep, sys-nanosleep): Changed to retry
sleep/nanosleep by default if it is interrupted by as signal.
They can be interrupted very often, for GC may use signals
to synchronize threads. We assume it's very unlikely that
there are programs that relies on the previous behavior,
but if you do need those procedures to return by signals,
give #t to the optional argument.
2014-10-02 Shiro Kawai <[email protected]>
* src/cross-compile-ios.scm: A script to compile Gauche as an iOS
framework. This is kind of old---tested on 2013/07 with iOS6
and haven't updated since then. Just put it in repo for
a reference.
2014-10-01 Shiro Kawai <[email protected]>
* lib/gauche/computil.scm : Added. Provides some basic comparators.
* src/autoload.scm: Autolaod computil.scm
2014-09-29 Shiro Kawai <[email protected]>
* src/compare.c (Scm_Compare): Handle complex number ordering.
2014-09-28 Shiro Kawai <[email protected]>
* src/compare.c (Scm_Compare): Implement ordering of different types,
according to srfi-114.
2014-09-27 Shiro Kawai <[email protected]>
* src/compile.scm (define-syntax): Fix the case when toplevel
macro is inserted by another hygienic macro. We may need to
revisit interpretation of toplevel identifier renaming; see
the comment in pass1/define.
2014-09-26 Shiro Kawai <[email protected]>
* src/compare.c (Scm_Compare), src/vector.c, src/symbol.c: Enhanced
domain of Scm_Compare to support srfi-114. Now booleans, lists,
symbols, vectors and uvectors can be compared each other.
* src/libcmp.scm (comparator-*): Added some srfi-114 comparator API.
2014-09-25 Shiro Kawai <[email protected]>
* src/libvec.scm: Added uvector?
2014-09-24 Shiro Kawai <[email protected]>
* ext/util/queue.scm, ext/data/queue.scm: util.queue -> data.queue.
2014-09-23 Shiro Kawai <[email protected]>
* ext/math/mt-lib.stub: Merged to mt-random.scm
2014-09-22 Shiro Kawai <[email protected]>
* ext/gauche/fcntlib.stub: Merged to fcntl.scm
2014-09-21 Shiro Kawai <[email protected]>
* ext/zlib/zliblib.stub: Merged to zlib.scm
2014-09-20 Shiro Kawai <[email protected]>
* lib/gauche/cgen/precomp.scm (without-precompiling): Added a special
directive to put the forms into *.sci file, without precompiling them.
If we want to cond-expand at load time, we can't precompile it.
* ext/termios/termiolib.stub: Merged to termios.scm
* ext/binary/binarylib.stub: Merged to io.scm
2014-09-19 Shiro Kawai <[email protected]>
* examples/snake.scm: Added a sample of text.console.
2014-09-18 Shiro Kawai <[email protected]>
* lib/text/console.scm: Added. Still unofficial & experimental.
2014-09-16 Shiro Kawai <[email protected]>
* ext/termios/termios.scm (with-terminal-mode): Experimentally added.
2014-09-15 Shiro Kawai <[email protected]>
* lib/gauche/interactive.scm (describe): Improve output of
(describe <generic>).
2014-09-13 Shiro Kawai <[email protected]>
* src/gauche.h (SCM_FOREIGN_POINTER_REF): Calls Scm_ForeignPointerRef.
* src/class.c (Scm_ForeignPointerRef, Scm_ForeignPointerInvalidP)
(Scm_ForeignPointerInvalidate): Added. When the object pointed
by a foreign pointer became obsoleted (e.g. freed), you can mark
the foreign pointer "invalid", so that the subsequent dereference
of the pointer raises an error.
* src/libmisc.scm (foreign-pointer-invalid?, foreign-pointer-invalidate!):
Scheme interface for the above.
* ext/windows/console.stub (sys-set-screen-buffer-size): Fixed a bug.
* ext/vport/vport.scm (open-output-uvector):
Allow option to make the output buffer extendable.
(get-output-uvector): Added to enable retrieving the accumulated
result, needed when the buffer is extendable.
* lib/r7rs.scm (open-output-bytevector, get-output-bytevector):
Rewritten using above.
2014-09-12 Shiro Kawai <[email protected]>
* lib/gauche/cgen/stub.scm (define-cptr): Fix a bug that passes
unboxer and boxer names in reverse (thanks to KOGURO Naoki).
* ext/uvector/uvector.scm (uvector-class-element-size)
(uvector-copy): Added.
2014-09-11 Shiro Kawai <[email protected]>
* ext/uvector/uvector.scm (make-uvector): Added generic uvector
constructor.
* ext/template.configure: FIX: Added missing default_prefix setup.
* src/error.c (Scm_Raise), src/libexc.scm (raise),
src/vm.c (Scm_VMThrowException): The last fix of r7rs#raise
wasn't enough, for it invoked the second error with the same
exception handler as the first raise.
2014-09-10 Shiro Kawai <[email protected]>
* lib/r7rs.scm (raise): Adjust r7rs#raise to be compatible with r7rs,
instead of using gauche#raise (srfi-19 compatible).
2014-09-09 Shiro Kawai <[email protected]>
* lib/gauche/vecutil.scm (vector-for-each, vector-for-each-with-index):
Fix bugs when more than one vectors are given.
* lib/gauche/common-macros.scm (dotimes): Return #<undef> unless
the result clause is provided. It doesn't really matter, but better
to make it explicit that the return value is undefined.
2014-09-07 Shiro Kawai <[email protected]>
* src/module.c (Scm_ImportModule): Fix a bug in dupe elimination
of imported modules. We should allow modules that have the same
origin, for they may have different qualifications; in such a case,
eliminating one will change the semantics.
2014-09-06 Shiro Kawai <[email protected]>
* lib/Makefile.in: Don't forget to install gauche/base.scm.
* ext/util/queue.scm (dequeue-int): Clear the slots of dequeued
pair, to ensure weak-GC safety.
* lib/text/html-lite.scm: Support HTML5 elements and doctype
(patch from Takashi Fujita).
2014-09-04 Shiro Kawai <[email protected]>
* src/number.c (Scm_StringToNumber): Allow '_' to be inserted between
digits when a number is explicitly prefixed. This is for the
readability, e.g. #b1101_1000_0001_1101 etc. We don't allow
unprefixed numbers, though, for the possible incompatibility
(e.g. 3_2 may be interpreted as a symbol.)
2014-09-03 Shiro Kawai <[email protected]>
* lib/gauche/interactive.scm (describe): When object is char or integer,
print alternative representation / useful info if relevant.
2014-08-28 Shiro Kawai <[email protected]>
* lib/gauche/cgen/precomp.scm (handle-define-syntax): Allow
Scheme-defined low-level macro transformer to be compiled
into *.c file, instead of emitting it to *.sci file.
* src/libmod.scm (%insert-syntax-binding): Added. Currently our
runtime don't distinguish toplevel value binding and syntax binding,
so %insert-binding can do both, but in future we may treat syntactic
binidng specially.
* src/compile.scm: Changed accordingly.
2014-08-24 Shiro Kawai <[email protected]>
* src/gauche/macro.h -> src/gauche/priv/macroP.h: Moved macro
implementation details to private header. ScmSyntax and
ScmMacro should be treated as opaque objects. Various files
adjusted.
* src/macro.c (Scm_MakeMacro): Changed ScmMacro structure and
the signature of Scm_MakeMacro. Now ScmMacro is simply a wrapper
of macro transformer (Sexpr, Env -> Sexpr), with an optional
name. Technically this is an incompatible change, but we
expect nobody was directly using this interface.
We also change the way the macro expander is called; we pass
CENV, instead of a list frames, to the expander procedure.
This was never specified explicitly, and actually we had it wrong---
tye synrule expander expected frames, and the primitive expander
expected cenv. It happened to work because we hadn't used env
argument of primitive-expander yet.
* src/libeval.scm (macro-transformer): Added.
(call-macro-expander): Pass CENV to the third arg.
2014-08-23 Shiro Kawai <[email protected]>
* src/macro.c (Scm_VMMacroExpand): Obsoleted. Implement it in
compile.c (%internal-macro-expand).
* src/libeval.scm (macroexpand, macroexpand-1): Changed accordingly.
2014-08-21 Shiro Kawai <[email protected]>
* src/error.c (Scm_PrintDefaultErrorHeading),
src/libexc.scm (print-default-error-heading): Implement this in
Scheme for the better maintainability.
* src/libomega.scm (report-mixin-condition): Generalized handling
mixin conditions.
Note: The above two changes may be a dangerous move, which
can make it difficult to diagnose when we mess up then runtime
in a way that error reporting can't be carried out. Especially,
now we rely on working method dispatch to display mixin condition
messages. If this becomes an issue, we may replace the mixin
condition mechanism to more primitive ones, like manual dispatch.
* src/libexc.scm (<compile-error-mixin>),
src/compile.scm (compile): Handle compile error using mixin
condition.
2014-08-20 Shiro Kawai <[email protected]>
* lib/gauche/exception.h, src/error.c (<load-condition-mixin>):
Added a mixin condition type to attach load context to
errors occurred during loading.
(Scm_PrintDefaultErrorHeading): Add load context information
when available.
(Scm_ExtractSimpleCondition): Added.
* src/libeval.scm (load-from-port): Intercept a thrown condition to
attach <load-condition-mixin>.
* lib/gauche/test.scm (<test-error>, test-check): Checks the
result condition considering compound conditions. In order to
use condition-has-type?, now <test-error> instance holds
the actual condition object.
* lib/gauche/condutil.scm, src/libomega.scm: Moved
definition of (slot-missing <condition-meta> <compound-condition>
<top>) from the former to the latter; Slots of compound conditions
may be referred without condutil being autoloaded.
2014-08-19 Shiro Kawai <[email protected]>
* lib/binary/pack.scm (make-packer): Made cached? argument :optional
for the consistency with the doc.
2014-08-18 Shiro Kawai <[email protected]>
* src/compile.scm (primitive-macro-transformer): Added experimentally;
the plan is to build all other macro system on top of this. See
if it's feasible.
(cenv-lookup-variable, cenv-lookup-syntax, env-lookup): Split
cenv-lookup into these APIs; mainly to avoid construction of
temporary cenv when we already have module and frames separately.
* src/libmod.scm (id->bound-gloc): Moved from compile.scm.
* src/macro.c (Scm_MakeMacroTransformer): Changed signature of
the transformer - now it takes form and macro-use environment.
2014-08-16 Shiro Kawai <[email protected]>
* src/compile.scm (ensure-identifier): Properly capture the environment
into the created identifier.
(%bind-inline-er-transformer): Fix incorrect initialization of
cenv.
(%attach-inline-er-transformer): Make compare closure work.
(free-identifier=?): Added.
2014-08-14 Shiro Kawai <[email protected]>
* src/system.c (Scm_AvailableProcessors),
src/syslib.scm (sys-available-processors): Added to query # of
available processors.
2014-08-13 Shiro Kawai <[email protected]>
* lib/gauche/vm/debugger.scm (debug-funcall), src/read.c (#?,):
Experimentally added a new debug form, #?,(proc arg ...). Unlike
debug-print (#?=), this displays the value of arg ....