-
-
Notifications
You must be signed in to change notification settings - Fork 81
/
ChangeLog
25327 lines (18044 loc) · 944 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
2024-09-05 Shiro Kawai <[email protected]>
* src/libobj.scm (describe-slots): Hide slots starting with '%' by
default. Setting a dynamic state describe-details to a true value
changes it. Since 'describe' is for human interaction, we thing
this bit of convention would help users.
2024-08-29 Shiro Kawai <[email protected]>
* lib/gauche/version.scm: Relaxed relnum syntax. Now it allows
sequence of chars except delimiting ones ([._-]). It is becaues
bleeding-edge tarball has something like 0.9.15-p1+20240829.
2024-08-27 Shiro Kawai <[email protected]>
* tools/make-tgz.sh: Allow creating snapshot tarball with snapshot_id
* configure.ac: Add GAUCHE_SNAPSHOT_ID, an optional string to dicern
versions of snapshot tarballs.
* lib/lang/c/type.scm (c-actual-type): Fix the case when identifier
is typedef'ed to an aggregate type. The old code assumed the
inner type was always a basic type.
This was the cause of https://github.com/shirok/Gauche/issues/1044
2024-08-11 Shiro Kawai <[email protected]>
* lib/srfi/190.scm: Proper support of srfi-190, based on
identifier syntax and syntax parameters.
2024-08-09 Shiro Kawai <[email protected]>
* src/compile-1.scm (define-syntax-parameter, syntax-parameterize):
Added srfi-139 (preliminary). We need more error checks and tests.
2024-08-06 Shiro Kawai <[email protected]>
* src/compile-1.scm (make-id-transformer): Attach expression name
to identifier macros. The id-macro object rarely surfaces:
When you evaluate the identifier bound to an id-macro, it
immediately expands, so the macro object can't be obtained through
evaluation. Still it may be appear during debugging, and
it's useful to see the name of the macro.
2024-08-03 Shiro Kawai <[email protected]>
* lib/util/identifier-syntax.scm (identifier-syntax): Add support
of R6RS identifier-syntax.
2024-08-02 Shiro Kawai <[email protected]>
* src/macro.c (compile_rules, synrule-expand): Allow a single
identifier as pattern, e.g. (syntax-rules () (_ template)).
This pattern matches anything. Especially useful when compiled
with make-id-transformer, for this pattern can be used to
match the identifier macro.
2024-08-01 Shiro Kawai <[email protected]>
* src/compile-1.scm (make-id-transformer): Experimentally added.
It wraps ordinary macro to make an id macro. Similar to R6RS
make-variable-transformer, but you need it even the id macro is
used without set!.
2024-07-31 Shiro Kawai <[email protected]>
* src/compile-1.scm (set!): Add support of identifier macro call
when id-macro is used in (set! id expr) form.
2024-07-30 Shiro Kawai <[email protected]>
* src/compile.scm (define-cproc), src/compile-1.scm (pass1),
src/libmacbase.scm (call-id-macro-expander): Allow id-macro
to be global.
2024-07-28 Shiro Kawai <[email protected]>
* src/libdict.scm (dict-transparent?): Priting dictionary content
unconditionally is a bad idea. A <dictionary> instance may access
external resources, or may have unbounded size (e.g. computed content).
Trying to print such a dictionary and write-walk recurse into it
would be a disaster.
With dict-transparent? method, a dictionary class may elect that
pprint prints its content. Default is not transparent.
2024-07-27 Shiro Kawai <[email protected]>
* src/libdict.scm: Make dictionary protocol implementation of
hashtables and treemaps built-in. We need dict methods
to walk into dictionaries during write-walk.
(See https://github.com/shirok/Gauche/issues/1060).
We don't want entire gauche.dictionary built-in, since it
drags gauche.collection into core as well. So externally
gauche.dictionary remains as a library module and nothing changes.
* src/libhash.scm: Moved original content of libdict.scm here.
I've always been confused where to find hashtable cproc definitions.
Now it's easier.
2024-07-25 Shiro Kawai <[email protected]>
* lib/gauche/pputil.scm (layout-dict): Instead of letting built-in
print handler to display hash-table content, we can directly handle
it in pprint.
https://github.com/shirok/Gauche/issues/1032#issuecomment-2252319794
This can avoid the complications of recursing pprint and
Scm_Vprintf https://github.com/shirok/Gauche/issues/1058
2024-07-21 Shiro Kawai <[email protected]>
* src/write.c (Scm_Vprintf): Use current column for the indentation
of %W.
* src/core.c (Scm_RuntimeState): Generalize Scm_InitializedP() to
Scm_RuntimeState(), to track several initialization phases.
2024-07-20 Shiro Kawai <[email protected]>
* src/hash.c (hash_print): Default printer to print hash table content.
https://github.com/shirok/Gauche/issues/1032
2024-07-18 Shiro Kawai <[email protected]>
* src/vm.c (Scm_VMDynamicWind): Allow 'before' handler to be SCM_FALSE,
in which case we can skip calling it. A bit of saving.
* src/vm.c: Ditched vm->escapePoint chain. It had two roles:
error handler stack and a list of EPs that points to in-stack cont
frames. Now we unified error handlers into exception handlers,
and keeps in-stack cont EPs in vm->floatingEscapePoints list.
See https://github.com/shirok/Gauche/issues/1037
2024-07-13 Shiro Kawai <[email protected]>
* src/vm.c (Scm_NewVM): When a new VM (thread) is created, we only
need to inherit parameterizations for the new dynamic environment.
Other dynamic stuff are reset to the default values at the entrance
of the thread and upstream values are never accessed.
2024-07-12 Shiro Kawai <[email protected]>
* ext/tls: Avoid depending tls-mbed shared object on tls shared object,
for it complicates things on Windows.
(tls-debug-level-set!): Saves the debug level globally, and
tell it to newly registered subsystem. By this, the debug level
setting isn't affected by the timing of loading of the subsystem.
2024-07-06 Shiro Kawai <[email protected]>
* libsrc/text/tr.scm (build-char-array): Fix backslash handling.
https://github.com/shirok/Gauche/issues/1051
We also clarified the case when there are dups in from-list:
the first entrly wins.
2024-06-30 Shiro Kawai <[email protected]>
* lib/srfi/234.scm: Added.
2024-06-29 Shiro Kawai <[email protected]>
* lib/Makefile.in: generate slibcat in builddir then install,
instead of generating it in the installation directory. Generating
after installation doesn't work if we use DESTDIR. We had
slibcat-in-place makefile target specifically for that, but we can
generate slibcat in builddir anyway, we can always use it.
https://github.com/shirok/Gauche/issues/1046
2024-06-28 Shiro Kawai <[email protected]>
* ext/tls/tls-mbed.c (mbed_read, mbed_write): Handle non-fatal
errors. Without this, TLS1.3 session stops when server sends
a session ticket.
https://github.com/shirok/Gauche/issues/1047
2024-06-27 Shiro Kawai <[email protected]>
* ext/tls/tls.scm (tls-debug-level-set!): API to set debug level of
TLS submodules.
2024-06-21 Shiro Kawai <[email protected]>
* lib/tools/compile-r7rs: Drop support of COMPILE_R7RS. If the
variable is set, we warn that we don't support it. See the
discussion at https://github.com/shirok/Gauche/pull/1045.
2024-06-19 Shiro Kawai <[email protected]>
* src/genconfig.in.in: Remove '--prefix' and '--exec-prefix' configure
arguments from CONFIGURE_ARGS if we compile Gauche to obtain
runtime directory relative to the library location (MinGW,
OSX framework). In such cases, '--prefix' etc. is irrelevant
to recompile, and it becomes actually a nuisance if it appears
in 'gauche-config --reconfigure'.
2024-06-12 Shiro Kawai <[email protected]>
* src/number.c (print_number),
lib/gauche/numutil.scm (print-exact-decimal-point-number):
Add hook to print exact decimal notation if ratonal number's
denominator is divisible by 2 and 5.
* src/gauche/priv/writerP.h, src/libio.scm, src/write.c:
Add exact-decimal slot to <write-controls>
* lib/gauche/interactive/toplevel.scm (print-mode):
Allow changing exact-decimal setting.
2024-06-09 Shiro Kawai <[email protected]>
* lib/gauche/parseopt.scm (let-args): Rewrote using er-macro,
supporting plural options (cmdoption that can be specified
more than once).
2024-06-08 Shiro Kawai <[email protected]>
* lib/gauche/interactive.scm (describe): Show polar representaion
when describing a complex number.
2024-06-05 Shiro Kawai <[email protected]>
* src/libobj.scm (ref): Make generic referencer work on <mv-box>.
https://github.com/shirok/Gauche/issues/1038.
* lib/gauche/interactive/completion.scm (%complete-symbol): Exclude
verbose method names from completion candidates.
Cf. https://github.com/shirok/Gauche/issues/1039
2024-06-02 Shiro Kawai <[email protected]>
* lib/gauche/parseopt.scm (let-args, option-parser-help-string):
Add option help string generation.
Cf. https://github.com/shirok/Gauche/issues/661
2024-05-29 Shiro Kawai <[email protected]>
* lib/text/fill.scm: Added.
2024-05-27 Shiro Kawai <[email protected]>
* lib/rfc/uuid.scm (make-uuid7-generator): Add optional argument to
specify the amount of increment. Also fixed a bug to avoid
increment gets 0.
2024-05-26 Shiro Kawai <[email protected]>
* ext/uvector/uvector.c.tmpl: Make sure recognizing big/little endian
designator as well as big-endian/little-endian.
https://github.com/shirok/Gauche/issues/1036
2024-05-24 Shiro Kawai <[email protected]>
* lib/rfc/uuid.scm: Change to generator-make style a la data.random
and srfi.194. This clarifies interaction with uuid-random-source,
and makes less lock contention.
https://github.com/shirok/Gauche/issues/1034
2024-05-21 Shiro Kawai <[email protected]>
* src/genconfig.in, src/gen-genconfig.scm: Generate genconfig.in
form the single source of config parameter description.
Note: genconfig.in needs to be generated _before_ 'configure',
hence the generation rule isn't in Makefile. 'DIST tgz' takes
care of it.
2024-05-17 Shiro Kawai <[email protected]>
* lib/rfc/uuid.scm: Added uuid6 and uuid7, according to RFC9562.
* configure.ac: Change --enable-common-commands to
--enable-shared-commands.
See the discussion in https://github.com/shirok/Gauche/pull/1030
2024-05-16 Shiro Kawai <[email protected]>
* configure.ac: Add --enable-common-commands to install SRFI-defined
common commands such as compile-r7rs, scheme-r7rs, etc.
See the discussion in https://github.com/shirok/Gauche/pull/1030
2024-05-15 Shiro Kawai <[email protected]>
* src/gen-features.sh: Define feature ids for operating system and CPU,
using configure's $host. Inspired by
https://github.com/shirok/Gauche/pull/1033
2024-05-12 Shiro Kawai <[email protected]>
* lib/tools/compile-r7rs: Added SRFI-138 compliant script.
Contributed by Antero Mejr
https://github.com/shirok/Gauche/pull/1030
2024-05-10 Shiro Kawai <[email protected]>
* lib/gauche/configure/output.scm (cf-output): Adjust escaping of
cf-define-ed value when it appears in -Dvar=val.
https://github.com/shirok/Gauche/issues/1028
2024-05-08 Shiro Kawai <[email protected]>
* lib/srfi/252.scm (inexact-complex-generator): The previous one
duplicates initial seqeunces by using inexact-real-generator
for real and imag parts. Fixed.
2024-05-07 Shiro Kawai <[email protected]>
* lib/text/sh.scm: New module for shell-related text processing,
including shell-style pattern match.
(cf. https://github.com/shirok/Gauche/issues/1026)
shell-escape-string and shell-tokenize-string are also moved
here from gauche.process, since they are pure text processing and
nothing to do with subprocess. (Though we keep them available
through gauche.process as well).
* src/libsys.scm (glob-component->regexp): Allow special characters
to be scaped with '\'. Also added :shell mode.
2024-05-06 Shiro Kawai <[email protected]>
* lib/gauche/configure/output.scm (cf-output): Fix srcdir substitution
for subdirectories
https://github.com/shirok/Gauche/issues/1025
2024-05-05 Shiro Kawai <[email protected]>
* examples/spigot-subdir: Added an example when C files are
put under src/ subdirectory.
2024-05-03 Shiro Kawai <[email protected]>
* src/gauche-package.in: It gets too bloated, so moved the 'meat'
into gauche.package.commands.
* configure.ac: 0.9.15-p1, just to distinguish from released version.
2024-05-02 Shiro Kawai <[email protected]>
* libsrc/gauche/process.scm: (call-with-*-process): Allow #f
for :on-abnormal-exit, which discards the result of proc
and returns #f when the process exits abnormally.
https://github.com/shirok/Gauche/issues/1024
2024-04-30 Shiro Kawai <[email protected]>
* lib/gauche/configure/lang.scm: Changed cf-lang-program to take
either a string or a list of strings as prologue and body arguments,
instead of a string tree. This technically breaks compatibility,
though most of the time it should work.
https://github.com/shirok/Gauche/issues/1023
2024-04-26 Shiro Kawai <[email protected]>
* src/vm.c (Scm__InitVM): Flip the default value of
CHECK_UNDEFIFNED_TEST flag. Now it is on by default,
and is suppressed with env var GAUCHE_ALLOW_UNDEFINED_TEST.
2024-04-25 Shiro Kawai <[email protected]>
* lib/gauche/libutil.scm (library-for-each): Make it agnostic
to the return value of given proc.
* lib/gauche/interactive/completion.scm (%complete-module-name):
Avoid the closure returining #<undef>.
https://github.com/shirok/Gauche/issues/1022
* src/srfis.scm: SRFI-252 went final, so we officially support it.
2024-04-23 Shiro Kawai <[email protected]>
* Release 0.9.15
* tools/tls/Makefile.in: Downgraded MbedTLS-internal version to
3.5.2, since 3.6.0 has an issue on MinGW. See
https://github.com/shirok/Gauche/issues/1021
* tools/tls/process-config.sh: Need to tweak MinGW i686 build.
* lib/gauche/configure.scm (cf-call-with-cpp): Added.
* src/genconfig.in: Add --cpp and --cppflags for C preprocessor
configration. Useful for 'configure' script.
2024-04-17 Shiro Kawai <[email protected]>
* src/libnum.scm (sin etc.): Let them always return inexact numbers.
Previously we had (sin #e0) => #e0 etc., but it's not necessary,
and diverging from real-sin etc. isn't desirable.
(atan): Fix the special case when both args are zero.
2024-04-16 Shiro Kawai <[email protected]>
* ext/tls/tls-mbed.c (Scm_Init_rfc__tls__mbed): Add missing
psa_crypto_init() to fix TLS handshake error.
https://github.com/shirok/Gauche/issues/1018
* tools/tls/Makefile.in (include/mbedtls): Bumped MbedTLS version
to 3.6.0 to fetch with --with-tls=mbedtls-internal.
2024-04-15 Shiro Kawai <[email protected]>
* src/system.c (Scm_SysExec),
src/libsys.scm (%sys-escape-windows-command-line): When a BAT file
is run via CreateProcess, Windoes uses different rules to parse
the command line, causing a security risk. We reject 'unsafe'
characters in the command line arguments if BAT file is the program
to run. See CVE-2024-3566
https://nvd.nist.gov/vuln/detail/CVE-2024-3566
2024-04-10 Shiro Kawai <[email protected]>
* DIST, test/standalone.scm: Run build-standalone with the installed
Gauche during DIST self-host-test.
This can catch the issue like
https://github.com/shirok/Gauche/issues/1013
* src/gauche.h: Do not include gauche/priv/configP.h, even if it is
#ifdef'ed. It is simply wrong to include a private header from a
public header. Instead, it should be included from each
individual source files.
Cf. https://github.com/shirok/Gauche/issues/1013
2024-04-08 Shiro Kawai <[email protected]>
* ext/sxml/sxml-tools.scm.in (sxml:sxml->xml): Replace original proc
to handle namespaces.
2024-04-07 Shiro Kawai <[email protected]>
* src/libnum.scm (*, +): When used as unary operators on non-number
object, delegate it to object-* or object-+. For the practical
purposes, they should return the argument as is; their existence
is the assertion that such opeartion is valid. We used to return
the argument as is, but that may miss errors. Just in case if
existing code depends on the old behavior, we issue a warning
and return the argument if there's no unary method defined on
the argument's class.
https://github.com/shirok/Gauche/issues/1012
2024-04-05 Shiro Kawai <[email protected]>
* src/libbox.scm (unbox, unbox-value): Associate setters. Now
you can say (set! (unbox <box>) <value>) etc.
* lib/gauche/cgen/cise.scm (<cise-env>): Use box for decls. Since
a new inner env may be created during recursion, we need an
indirection so that decls pushed into the inner env won't be lost.
2024-04-04 Shiro Kawai <[email protected]>
* src/string.c (string_putc): Buffer size too short.
Fix from NIIBE Yutaka.
* src/gauche/priv/arith.h (SADDOV): Avoid undefined behavior of
signed integer overflow. Fix from NIIBE Yutaka.
2024-04-03 Shiro Kawai <[email protected]>
* src/list.c: Ensure statically allocated ExtendedPairDescriptor
is aligned in 8 byte boundary. It should be treated the same
as ScmClass because of tagged pointer.
Original fix from NIIBE Yutaka.
* lib/srfi/238.scm: Added.
2024-04-01 Shiro Kawai <[email protected]>
* lib/srfi/64.scm: Changed integration to gauche.test. Instead of
having a specific runner to bridge to gauche.test, we now bridge
regardless of the test runner. This actually reveled some bugs
that have been overlooked (because it was reported only by the
srfi-64 test runner and not by gauche.test).
https://github.com/shirok/Gauche/issues/1010
* test/include/srfi-194-zipf-test.scm: Loosened tolerance of
chi^2 test a bit. It is statistical tests and we need some
more room of statistical deviation.
* lib/scheme/mapping.scm (%mapping-cmp),
lib/scheme/mapping/hash.scm (%hashmap-cmp): When given mappings
have different comparators, we should return #f, instead of
"cannot compare" error.
* lib/srfi/235.scm (disjoin): Fix when a predicate created with
disjoin is given no arguments. It is actually not specified
in SRFI text. The test in srfi repo returns #t for it.
2024-03-29 Shiro Kawai <[email protected]>
* lib/gauche/test/generative.scm: Removed in favor of upcoming srfi-252.
2024-03-27 Shiro Kawai <[email protected]>
* src/core.c (Scm_Init): Explicitly start marker threads. Recent
bdwgc delays marker thread creation until the user creates the
first thread, by default. See the discussion at
https://sourceforge.net/p/gauche/mailman/gauche-devel/thread/87r0fvd5bl.fsf%40karme.de/
* ext/sxml/sxml-tools.scm.in: Fix sxml:attr->html and sxml:sxml->html
to handle HTML's diversion from XML properly. Specifically,
- Do not treat colons in attribute names as namespace prefix
- Do not emit self-closing tag for non-void elements with empty
content.
https://github.com/shirok/Gauche-makiki/issues/11
2024-03-25 Shiro Kawai <[email protected]>
* Bumped version number to 0.9.14-p1
We're not quite ready for prerelease of next version (presumably
1.0_pre1), but we have enough changes since the last release
so we want to distinguish HEAD from the offical release.
* lib/data/random.scm (reals-between$): Fix overflow and precision loss
https://github.com/shirok/Gauche/issues/1000
2024-03-24 Shiro Kawai <[email protected]>
* ext/sxml/sxml-tools.scm.in (sxml:attr->xml, sxml:attr->html):
Override to fix shortcomings of the original sxml that attribute
values are not quoted.
Related: https://github.com/shirok/Gauche-makiki/issues/11
2024-03-23 Shiro Kawai <[email protected]>
* src/gauche-package.in (compile): Support --c++ option. This tells
precomp to generate *.cpp file. Later, we may switch precomp mode
to support C++ specific stuff.
* lib/gauche/cgen/unit.scm (<cgen-unit>): Add 'language slot;
now it generate *.cpp if the language is 'c++.
* src/libtype.scm (<Assortment>): Replace <Singleton> and
<Singleton-set> with <Assortment>. With this word, we can
use the same type for the union of singletons, eliminating
the need to have separate 'set' type.
Cf. https://github.com/shirok/Gauche/issues/906
2024-03-22 Shiro Kawai <[email protected]>
* src/gauche.h, src/gauche/float.h: Ensure include complex.h outside
of extern "C" linkage. OSX clang doesn't like otherwise if
we include gauche.h to C++ source.
https://github.com/shirok/Gauche/1006
2024-03-21 Shiro Kawai <[email protected]>
* src/gauche-package.in (compile),
lib/gauche/package/compile.scm (gauche-package-compile):
Add --srcdir option for out-of-tree compilation.
* libsrc/file/util.scm (build-path): Allow #f in the path components
(interpreted as ".") for the convenience.
2024-03-20 Shiro Kawai <[email protected]>
* lib/gauche/cgen/stub.scm (.include): Split .include in stub toplevel
and CiSE .include. Stub .include is emitted to decl section,
while CiSE .include is emitted in place (body section).
This may be potentially confusing, and good documentation is desired.
See https://github.com/shirok/Gauche/issues/1003 for the background
of this change.
2024-03-19 Shiro Kawai <[email protected]>
* lib/gauche/cgen/cise.scm (cise-omit-source-line): Change
the parameter cise-emit-source-line to cise-omit-source-line,
flipping the logic. This aligns better with the options
(e.g. --no-line of `gauche-package compile`).
* lib/data/range.scm (%appended-range-index): Bug in binary search.
Patch from @gengar https://github.com/shirok/Gauche/pull/1004
2024-03-18 Shiro Kawai <[email protected]>
* lib/gauche/cgen/precomp.scm: Take the default value of
omit-line-directives keyword arg from the parameter
cise-emit-source-info, so that the parameter settings by the
the higher layer (e.g. 'gauche-package compile') is reflected.
2024-03-16 Shiro Kawai <[email protected]>
* lib/gauche/listener.scm (listener-read-handler): Fixed a bug revealed
by the last fix. string-incomplete->complete is used in a
meaningless way.
* src/string.c (Scm_StringRefCursor): Fix a bug that leaked
#<unbound> to the Scheme world when an incomplete string is given.
It could be exhibited by this:
(let1 z #**"\xe1;"
(string-ref z (string-index->cursor z 0)))
Now it properly raises an error.
2024-03-15 Shiro Kawai <[email protected]>
* lib/srfi/215.scm: Supported. Contribution from Antero Mejr.
2024-03-12 Shiro Kawai <[email protected]>
* lib/data/random.scm (reals-power-law$): Added.
2024-03-11 Shiro Kawai <[email protected]>
* lib/data/random.scm (finite-flonums$): Added.
2024-03-10 Shiro Kawai <[email protected]>
* doc/Makefile.in: Use install-info if it's available, and DESTDIR
is not used. https://github.com/shirok/Gauche/issues/988
2024-03-09 Shiro Kawai <[email protected]>
* examples/mqueue-cpp: Update to use modern way (no stub file).
* ext/windows: Replace *.stub for *.scm.
2024-03-08 Shiro Kawai <[email protected]>
* lib/gauche/cgen/cise.scm: Handle C++ new and delete as operators.
(cise-render-identifier): Allow C++ namespace qualified identifiers.
2024-03-05 Shiro Kawai <[email protected]>
* src/libnum.scm (greatest-positive-flonum): Add. Also renamed
flonum-min-normalized and flonum-min-denormalized to
least-positive-normalized-flonum and least-positive-flonum.
They are consistent with {greatest|least}-fixnum. We added
'positive' for clarity. We dropped 'denormalized', since
the platform may not support denormalized flonums, and the
procedure returns normalized flonum in that case.
2024-03-04 Shiro Kawai <[email protected]>
* lib/gauche/package/compile.scm: Revert the idea of *.scm.c for
generated C files. It messes up Makefile inference rules
(make thinks foo.scm should be regenerated if foo.scm.o is newer).
For the name conflicts, we can name the stub definition file as
foolib.scm, much like we've done with foolib.stub. Now we can
do so because we split module definition file from stub definition
file.
* lib/gauche/cgen/precomp.scm: Add support of in-module form.
For now, this form is valid only for precompilation; normal
compiler ignores it with warning. It allows to switch modules
during precompilation like select-module, but the module
doesn't need to exist at the moment (it is created implicitly then).
It suppors precompiling sources with stubs separately from
the module definintion file.
Cf. https://github.com/shirok/Gauche/issues/993
2024-03-02 Shiro Kawai <[email protected]>
* lib/gauche/package/compile.scm:
When 'gauche-package compile' receives *.scm file, we create
intermediate C file as *.scm.c, instead of *.c, for a module
may already have *.c with the same name.
2024-03-01 Shiro Kawai <[email protected]>
* examples/spigot: Update for modern way---no *.stub file, and *.scm
file to be precompiled.
* lib/gauche/package/compile.scm (gauche-package-compile): Make sure
to pass DSO filename when '*.scm' is compiled with
'gauche-package compile'. Without this fix, generated '*.sci'
file can't have a proper dynamic-load call.
2024-02-29 Shiro Kawai <[email protected]>
* src/compile-1.scm, src/compile-5.scm, src/libcode.scm, src/libtype.scm:
Carry procedure type of closures in $lambda-meta, instead of
pair attribute of the source form---using pair attr was a kludge.
The type is carried as <descriptive-type>.
It is eventually stored in <compiled-code>#signature-info,
and retrieved by compute-procedure-type (which is called from
procedure-type).
This allows argument type information of closures to be reflected
to its procedure-type.
2024-02-27 Shiro Kawai <[email protected]>
* src/libtype.scm (type?): Added.
2024-02-25 Shiro Kawai <[email protected]>
* lib/lang/asm/regset.scm: Added.
2024-02-20 Shiro Kawai <[email protected]>
* src/vm.c, src/libeval.scm: Remove Scm_VMInsnOffsets and
%vm-get-insn-offsets. Add Scm_VMInsnAddress and %vm-get-insn-address.
This is an undocumented API change.
2024-02-18 Shiro Kawai <[email protected]>
* src/libexc.scm (print-additional-error-heading): Split auxiliary
info reporting from print-default-error-heading, so that it can be
used from other error reporters.
* src/main.c (error_exit): When we exit during with -l or -e option,
use print-additional-error-heading to print additional information
(but not a stack trace).
2024-02-14 Shiro Kawai <[email protected]>
* lib/gauche/vm/insn-core.scm, src/code.c: Add 'obj+native'
instruction type, for JIT support.
2024-02-13 Shiro Kawai <[email protected]>
* src/code.c, src/vminsn.scm: Change operand type 'addr' to 'label',
to avoid confusion with the oncoming enhancement.
(This is an API change, though it hasn't been documented).
2024-02-12 Shiro Kawai <[email protected]>
* lib/gauche/cgen/cise.scm (asm): Add asm cise macro to generate
gcc inline assembly.
2024-02-10 Shiro Kawai <[email protected]>
* lib/srfi/247.scm: Add SRFI-247
2024-02-07 Shiro Kawai <[email protected]>
* libsrc/gauche/collection.scm (size-of): Missing size-of method
defintion specialized for hashtables and treemaps, causing
size-of on these objects O(n).
Cf. https://github.com/shirok/Gauche/issues/987
2024-02-04 Shiro Kawai <[email protected]>
* lib/rfc/uri.scm (uri-decompose-query, uri-compose-query),
lib/rfc/http.scm (http-compose-query),
lib/www/cgi.scm (cgi-parse-parameters): Provide basic url query
utilities in rfc.uri, and define existing utils on top of them.
* src/liblist.scm: Change optional argument order of new alist-*
procs. It is easier to have key= argument first, to handle
variations.
2024-02-03 Shiro Kawai <[email protected]>
* src/liblist.scm (alist-merge): Added.
(alist-ref, alist-key, alist-adjoin, alist-update-in): Renamed
assoc-ref, rassoc-ref, assoc-adjoin, and assoc-update-in.
Old names are kept for the backward compatibility.
https://github.com/shirok/Gauche/issues/985
2024-02-02 Shiro Kawai <[email protected]>
* libsrc/gauche/collection.scm (group-collection->alist): Added.
2024-01-31 Shiro Kawai <[email protected]>
* libsrc/rfc/822.scm (rfc822-header-ref*, rfc822-header-put): Added.
2024-01-29 Shiro Kawai <[email protected]>
* src/gauche-package.in: Add 'populate' subcommand.
* lib/text/multicolumn.scm (layout-multicolumn): Fix the edge case
when the string list is empty.
2024-01-25 Shiro Kawai <[email protected]>
* Release 0.9.14
2024-01-23 Shiro Kawai <[email protected]>
* ext/charconv/jconv.c (jconv_open): If input and output encoding are
the same but not supported natively, use pass-through transcoder
instead of delegating it to iconv. Some verion of iconv doesn't
seem to like it.
https://github.com/shirok/Gauche/issues/979
* src/number.c (double_precision): Fix ratnum->flonum failure when
when either denominator or numerator is 2^(64n-1).
https://github.com/shirok/Gauche/issues/981
2024-01-22 Shiro Kawai <[email protected]>
* src/libnum.scm (real-ln): Fix precision loss of taking log on
a large bignum. https://github.com/shirok/Gauche/issues/980
2024-01-21 Shiro Kawai <[email protected]>
* lib/data/priority-map.scm: Allow any comparator as key-comparator;
we switch hashtable and treemap internally. Then dict->priority-map
can take the given dictionary's key-comparator.
2024-01-20 Shiro Kawai <[email protected]>
* lib/data/priority-map.scm (dictionary->priority-map),
(alist->priority-map): Added.
* lib/text/multicolumn.scm (display-multicolumn): Add indent keyword
arg.
2024-01-19 Shiro Kawai <[email protected]>
* src/gauche-package.in ("info"): Add 'gauche-package info' command.
2024-01-16 Shiro Kawai <[email protected]>
* lib/data/random.scm: Switch the handling of current random source.
Now the procedures consistently captures the value of the
current random source at the time of creation of generators.
This is technically an incompatible change.
https://github.com/shirok/Gauche/issues/977
2024-01-15 Shiro Kawai <[email protected]>
* lib/srfi/194.scm, lib/srfi/194/*.scm: Completing srfi-194 support.
2024-01-12 Shiro Kawai <[email protected]>
* src/compile-5.scm (pass5/$DYNENV): Fixed a bug that when KEY or
VALUE of with-continuation-mark is a procedure call, its result
becomes the result of with-continuation-mark.
* lib/data/random.scm (reals-between$): The range calculation was
broken.
2024-01-09 Shiro Kawai <[email protected]>
* src/libfmt.scm (format-internal), src/libmacro.scm: Experimentally
introduce formatter cache. The compiler determines "potentially
cacheable" call of `format`, and the runtime takes advantage of it
if possible. The drawback is that the compiler macro now inserts
reference to `format-internal`. It's embedded in the precompiled
code and We can't change its API across versions.
2024-01-08 Shiro Kawai <[email protected]>
* src/libfmt.scm (formatter-parse): Support conditional directive
(tilde left-bracket).
2023-12-30 Shiro Kawai <[email protected]>
* src/error.c (Scm_MessageConditionPrint): Extend the error message
truncation limit so that unexpected exception can give more info.
2023-12-29 Shiro Kawai <[email protected]>
* ext/tls/tls-mbed.c (mbed_write): If the data is big, single
mbedtls_ssl_write may return with partial write, so we need
to retry to send the rest of the data.
2023-12-28 Shiro Kawai <[email protected]>
* 0.9.14_pre1. Preparing another release to make TLS addition
available.
2023-12-17 Shiro Kawai <[email protected]>
* libsrc/file/util.scm (build-path): Allow 'cwd and 'cld as base-path
argument, for current workding directory and current loading
directory, respectively. We've seen enough of this pattern,
especially the latter, so it's worth having it.
2023-12-10 Shiro Kawai <[email protected]>
* ext/charconv: Support utf8bom encoding, which drops the optional BOM
at the beginning of utf8 stream. We simply implement utf8bom->utf8
internal routine, and use autosynthesis of other conversions.
We don't support utf8bom as an output encoding, at least for now
(see the discussion in the issue).
https://github.com/shirok/Gauche/issues/966
* src/librx.scm (%regexp-replace): Avoid rebinding current-output-port
during replacing, for the substitution procedure may output
and it's confusing that it is mixed into the result.
https://github.com/shirok/Gauche/issues/967
2023-12-06 Shiro Kawai <[email protected]>
* src/string.c (string_putc): Make 'write' escape control characters
in strings so that it's easier if hard-to-see characters are there,
e.g. Zero-width no-break space.
2023-12-03 Shiro Kawai <[email protected]>
* src/libthr.scm (run-once): Added.
(<mutex>, <condition-variable>, <thread-local>): Export these.
Class names are not in SRFI-19, but now that threads are in the
core, other parts of core may refer to them. (Notably, precomp
now needs them).
2023-11-29 Shiro Kawai <[email protected]>
* src/gencomp: Removed. This is an ancient script, superseded by
precomp long ago.
2023-11-25 Shiro Kawai <[email protected]>
* src/system.c (Scm_ToTimeSpec): More general interface that takes
the base time (t0) when relative time is given. Passing NULL
to t0 uses the current time.
Scm_GetTimeSpec() is defined on top of it. We thought to drop it,
but this API may have been used from other extensions, so we may
keep it.
2023-11-24 Shiro Kawai <[email protected]>
* src/builtin-sym.scm: Rearranged predefined symbols.
It's been for long time since we made builtin-syms.h private,
so no external code should depend on the order of them anymore.
* src/system.c (Scm_GetTimeSpec): Allow negative real number
for relative time specification. For the timeout argument,
we don't need that, but for general time operation it is useful.
Also support relative time specification with time-duration time.
2023-11-21 Shiro Kawai <[email protected]>
* lib/control/pmap.scm (run-map): Terminate threads when
timeout reaches with fully-concurrent-mapper.
https://github.com/shirok/Gauche/issues/964
* src/libsys.scm (absolute-time): Added. Handy to canonicalize
'timeout' argument.
2023-11-20 Shiro Kawai <[email protected]>
* lib/gauche/cgen/unit.scm (<cgen-dummy-unit>): Initialize
cgen-current-unit with a dummy instance which issues error message
saying <cgen-unit> isn't set up properly. It is better than
'object of class #<class <boolean>> doesn't have such slot'.
2023-11-19 Shiro Kawai <[email protected]>
* src/libmod.scm (module-exports?, module-binds?, module-binding-ref):
Introduced new names in place of global-variable-visible?,
global-variable-bound? and global-variable-ref.
See https://github.com/shirok/Gauche/issues/963
2023-11-18 Shiro Kawai <[email protected]>
* src/libmod.scm (global-variable-visible?): Added.
https://github.com/shirok/Gauche/issues/936
* ext/tls/tls.scm (tls-connect, tls-bind): Make proto argument
optional. DTLS is not very usable now, so there's little point
to allow users to specify udp here.
* ext/tls: Add tls-poll
2023-11-17 Shiro Kawai <[email protected]>
* ext/tls: Support get self/peer address, option to not verify
certificate.
2023-11-15 Shiro Kawai <[email protected]>
* doc/: Support epub generation from @qykth-git
https://github.com/shirok/Gauche/pull/959
2023-11-14 Shiro Kawai <[email protected]>
* ext/tls: Support TLS server connection.
2023-11-10 Shiro Kawai <[email protected]>
* ext/tls: Remove AxTLS support.
* src/module.c (Scm__InitModule): Remove obsoleted code to create
built-in srfi modules. Now it is done in auto-generated libsrfi.scm
so they're no longer needed, but had been harmless until we switch
srfi-N to srfi.N naming convention.
* lib/slib.scm (slib:features): Exclude srfi-0 from slib:features
to prevent slib initializer to load all available srfis, especially
srfi.29. It is mentioned in the comment immediately above, but
I seem to have reverted the change when I updated slib.scm based
on a newer template. https://github.com/shirok/Gauche/issues/960
2023-11-03 Shiro Kawai <[email protected]>
* libsrc/file/util.scm (remove-directory*): Add :if-does-not-exit
argument
2023-10-27 Shiro Kawai <[email protected]>
* src/system.c (Scm__WinFastLockLock): Fast lock implementation for
Windows (by @Hamayama, https://github.com/shirok/Gauche/pull/955)
2023-10-26 Shiro Kawai <[email protected]>
* src/bignum.c (bignum_mul_si): Optimize special case when bignum
muliplied by y=2^n (y is fixnum).
2023-10-24 Shiro Kawai <[email protected]>
* lib/r7rs-setup.scm (open-binary-*-file): Even though Gauche
doesn't distinguish textual and binary ports, opening file as
binary may have an observable difference on Windows ('binary' mode).
2023-10-22 Shiro Kawai <[email protected]>
* src/core.c (Scm_ObjToExitCode): Consolidate exit code translation
to be shared between 'exit', 'sys-exit', and 'emergency-exit'.
https://github.com/shirok/Gauche/issues/947
* src/libeval.scm (exit), lib/r7rs-setup.scm (emergency-exit),
src/libsys.scm (sys-exit): Allow to take #f as code, which
is mapped to exit code 1.
2023-10-21 Shiro Kawai <[email protected]>
* lib/srfi/74.scm: Fix blob-*-set! procedures.