/
ChangeLog
3102 lines (1966 loc) · 106 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
Tue Apr 5 00:06:44 2016 Aeris <aeris@imirhil.fr>
* ext/openssl/ossl_ssl.c (ossl_ssl_tmp_key): Access to ephemeral
TLS session key in case of forward secrecy cipher. Only
available since OpenSSL 1.0.2. [Fix GH-1318]
* ext/openssl/extconf.rb: Check for SSL_get_server_tmp_key.
Mon Apr 4 23:37:05 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_core.h (rb_vm_struct): make at_exit a single linked list but
not RArray, not to mark the registered functions by the write
barrier. based on the patches by Evan Phoenix.
[ruby-core:73908] [Bug #12095]
Mon Apr 4 17:43:45 2016 Koichi Sasada <ko1@atdot.net>
* gc.c: change deafult value of
RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO 0.3 -> 0.2
RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO 0.8 -> 0.65
These values are same as Ruby 2.0.0.
This change cause GC counts.
However, generational GC reduced each (minor) GC time and
increase memory locality. So that not so big impact on my
benchmarking results.
(surprizingly, this fix speed up programs on some cases)
You can change these values by environment variables
if you feel wrong.
Mon Apr 4 17:36:52 2016 Koichi Sasada <ko1@atdot.net>
* gc.c (get_envparam_double): take an upper_bound.
And also take an accept_zero flag which allow to accept zero
even if lower_bound is set.
* gc.c (ruby_gc_set_params): fix parameters.
RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO set 0.9 as *lower_bound*, so that
it should be upper_bound.
Set RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO as lower bound.
Also set lower/upper bound of RUBY_GC_HEAP_FREE_SLOTS_GOAL_RATIO to
RUBY_GC_HEAP_FREE_SLOTS_MIN/MAX_RATIO.
Mon Apr 4 16:41:32 2016 Koichi Sasada <ko1@atdot.net>
* vm.c (Init_VM): should pass tokens.
Sun Apr 3 09:34:29 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* numeric.c (flodivmod): round division if it is a finite number
and module is required.
* numeric.c (dbl2ival): do not round here.
* numeric.c (flo_ceil): use dbl2ival.
* numeric.c (flo_round): round explicitly.
Sat Apr 2 15:24:18 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* include/ruby/intern.h (rb_check_arity): returns argc.
Fri Apr 1 20:58:33 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode/case-folding.rb, casefold.h: Data generation to implement
swapcase functionality for titlecase characters. Swapcase isn't defined
by Unicode, because the purpose/usage of swapcase is unclear anyway.
The implementation follows a proposal from Nobu, swaping the case of
each component of a titlecase character individually.
This means that the titlecase characters have to be decomposed.
* enc/unicode.c: Code using the above data.
* test/ruby/enc/test_case_mapping.rb: Tests for the above.
Fri Apr 1 14:55:28 2016 Kazuki Yamaguchi <k@rhe.jp>
* configure.in (AC_CONFIG_FILES): $srcdir/.git can be a file pointing
the real git_dir, such as when the git working tree is a "linked
working tree" (a working tree created by git-worktree). So use
git-rev-parse --git-dir to check if $srcdir is the top-level of a git
repository, not just checking if the $srcdir/.git directory does exist
or not. [ruby-core:74759] [Bug #12239]
* tool/change_maker.rb: use tool/vcs.rb to detect VCS. This used to have
its own VCS detection code, while we have tool/vcs.rb.
* tool/vcs.rb (detect): remove code duplication
Fri Apr 1 04:50:44 2016 Eric Wong <e@80x24.org>
* ext/openssl/ossl_ssl.c (ossl_sslctx_s_alloc):
enable SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER by default
[Bug #12126]
Fri Apr 1 01:13:55 2016 Benoit Daloze <eregontp@gmail.com>
* thread.c (update_coverage): Do not track coverage in loaded files
after Coverage.result. Avoids out-of-bounds access. [Bug #12237]
* ext/coverage/coverage.c (coverage_clear_result_i): document.
Thu Mar 31 19:16:16 2016 Koichi Sasada <ko1@atdot.net>
* gc.c: need to set initial value of GC_HEAP_FREE_SLOTS_GOAL_RATIO.
Thu Mar 31 17:50:27 2016 Koichi Sasada <ko1@atdot.net>
* gc.c: change additional allocation policy.
Introduce new environment variable
RUBY_GC_HEAP_FREE_SLOTS_GOAL_RATIO (goal_ratio) to calculate the
ratio of additional memory.
Before this change, we add pages with the following formula
(when free_slots < total_pages * RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO):
next_pages = total_pages * RUBY_GC_HEAP_GROWTH_FACTOR
This addition can allocate too much.
With this change, we increase pages to satisfy the following formula:
next_free_slots = next_total_slots * goal_ratio
where
next_free_slots = free_slots + adding_slots
next_total_slots = total_slots + adding_slots.
If you want to prepare many free slots, increase this ratio.
If this variable is 0, then simply multiply
RUBY_GC_HEAP_GROWTH_FACTOR.
* gc.c (get_envparam_double): enable to accept 0.
Thu Mar 31 17:48:25 2016 Koichi Sasada <ko1@atdot.net>
* gc.c (gc_marks_finish): fix syntax error.
Thu Mar 31 16:49:36 2016 Koichi Sasada <ko1@atdot.net>
* gc.c: simplify allocate/free detecting logic at the end of marking.
Before this change, heap_pages_min_slots are calculated at the
beggining sweeping phase. And this value is used at the end of
*next* marking phase.
To simplify it, we use this value at the end of this marking phase.
It means that we don't need to store this value as global state.
Also heap_pages_max_slots is calculated at the begging of sweeping
phase and used at the end of sweeping phase.
To simplify this logic, we introduced new global value
heap_pages_freeable_pages it means extra pages count we can free.
gc_sweep_step() checks this value and moves empty pages to tomb_heap
not more than this value.
Because of this fix, heap_pages_swept_slots is no longer needed.
* gc.c (rb_objspace_t::heap_pages): restruct the objspace global
status.
remove the following fields
* swept_slots (and heap_pages_swept_slots)
* min_free_slots (and heap_pages_min_free_slots)
* max_free_slots (and heap_pages_max_free_slots)
And add the following filed.
* freeable_pages (and heap_pages_freeable_pages)
* gc.c (heap_pages_free_unused_pages): unlink tomb heap pages
because tomb heap should have only freeable pages.
* gc.c (heap_extend_pages): add parameters for future extension.
Thu Mar 31 16:43:02 2016 Koichi Sasada <ko1@atdot.net>
* gc.c: add GC parameters to configure the following values:
* RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO:
allocate additional pages when free slots is lower than
the value (total_slots * (this ratio)).
* RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO:
allow to free pages when free slots is greater than
the value (total_slots * (this ratio)).
Before this change, these values are hard coded.
* gc.c (ruby_gc_params_t): ditto.
* gc.c (ruby_gc_set_params): ditto.
Thu Mar 31 15:59:17 2016 Koichi Sasada <ko1@atdot.net>
* gc.c (gc_verify_heap_page): check the number of zombies.
* gc.c (gc_verify_heap_pages): check also tomb heap.
Thu Mar 31 15:48:18 2016 Koichi Sasada <ko1@atdot.net>
* gc.c (gc_page_sweep): return free slots count.
* gc.c (gc_sweep_step): use returned free slots count.
* gc.c (gc_sweep_step): change variable name `next'
to `next_sweep_page'.
Thu Mar 31 11:33:49 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/date/date_core.c (d_lite_strftime, dt_lite_strftime): [DOC]
fix indent not to be a big sole verbatim.
Thu Mar 31 11:18:19 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/date/date_core.c (Init_date_core): [DOC] fix misplaced doc
of DateTime. [ruby-core:74729] [Bug #12233]
Thu Mar 31 03:41:02 2016 NARUSE, Yui <naruse@ruby-lang.org>
* ext/nkf/nkf-utf8/nkf.c: Merge upstream 69f7e74dde.
fix indent.
Wed Mar 30 16:33:19 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* extension.rdoc, extension.ja.rdoc: [DOC] Fix some errors.
Renamed files, wrong method names or argument types; the example
GetDBM macro is now updated to the current version of the actual
code. patch by Marcus Stollsteimer in [ruby-core:74690].
[Bug #12228]
Wed Mar 30 09:46:01 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org>
* lib/open-uri.rb: Use `userinfo` for authenticated proxy.
[fix GH-1148] Patch by @SokichiFujita
* test/open-uri/test_open-uri.rb: ditto.
[fix GH-1309] Patch by @jdamick
Wed Mar 30 01:56:06 2016 NARUSE, Yui <naruse@ruby-lang.org>
* ext/nkf/nkf-utf8/nkf.c: Merge upstream 4f3edf80a0.
patched by Anton Sivakov [Bug #12201] [Bug #12202]
Wed Mar 30 01:54:30 2016 NARUSE, Yui <naruse@ruby-lang.org>
* tool/redmine-backporter.rb: add given revision to current changesets
on associating the revision to the related ticket.
Wed Mar 30 01:53:17 2016 NARUSE, Yui <naruse@ruby-lang.org>
* tool/merger.rb: update revision.h before merge.
Tue Mar 29 19:33:54 2016 NARUSE, Yui <naruse@ruby-lang.org>
* addr2line.c: define toupper for its use. fix r54391.
Tue Mar 29 19:23:46 2016 NARUSE, Yui <naruse@ruby-lang.org>
* include/ruby/ruby.h (rb_isupper, rb_islower, rb_isalpha, rb_isdigit,
rb_isalnum, rb_isxdigit, rb_isblank, rb_isspace, rb_isblank,
rb_iscntrl, rb_isprint, rb_ispunct, rb_isgraph,
rb_tolower, rb_toupper): use inline function to avoid function call.
* include/ruby/ruby.h (rb_isascii): use inline function to clarify
the logic.
Tue Mar 29 18:56:55 2016 NARUSE, Yui <naruse@ruby-lang.org>
* tool/redmine-backporter.rb (backport): show merger.rb's path.
* tool/redmine-backporter.rb (show): show current issue again if no
ticket number is given.
* tool/redmine-backporter.rb (rel): show error message if current
bugs.ruby-lang.org doesn't support the API.
Tue Mar 29 18:54:34 2016 NARUSE, Yui <naruse@ruby-lang.org>
* tool/merger.rb: support to backport header as backport identifier.
Now you can specify by 'merge revision(s) 49254: [Backport #10738]'.
Tue Mar 29 16:53:44 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode/case-folding.rb, casefold.h: Tweaked handling of 6
special cases in CaseUnfold_11_Table.
* enc/unicode.c: Adjustments for above.
* test/ruby/enc/test_case_mapping.rb: Tests for the above: Some tests in
test_titlecase activated; test_greek added. A test in test_cherokee fixed.
Tue Mar 29 13:31:00 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode.c: Cleaned up some comments.
Tue Mar 29 13:24:56 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode/case-folding.rb, casefold.h: Removing data for idempotent
titlecasing.
* enc/unicode.c: Adjust code to data removal.
Tue Mar 29 12:45:18 2016 Laurent Arnoud <laurent@spkdev.net>
* lib/webrick/httpresponse.rb: Move error_body to method. It allow to
override the body more easily. [fix GH-1307]
* test/webrick/test_httpresponse.rb: ditto.
Tue Mar 29 06:40:53 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* error.c (rb_compile_err_append): rb_thread_t::base_block is no
longer used.
* iseq.c (rb_iseq_compile_with_option): ditto, no protection is
needed.
Tue Mar 29 06:39:22 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (struct parser_params): move parse_in_eval flag from
rb_thread_t.
* parse.y (rb_parser_set_context): set parsing context, not only
mild error flag.
* iseq.c (rb_iseq_compile_with_option): the parser now refers no
thread local states to be restored.
* vm_eval.c (eval_string_with_cref): ditto.
Mon Mar 28 21:24:02 2016 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* numeric.c (int_pos_p): fix typos.
Mon Mar 28 14:54:49 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode.c: Refactoring in preparation for data reduction for
titlecase.
Mon Mar 28 14:36:36 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode.c: Minor refactoring for I WITH DOT ABOVE.
Mon Mar 28 14:26:24 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode.c: Removed code now covered by data from table.
Mon Mar 28 11:49:21 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode.c: Adding comments. [ci skip]
Mon Mar 28 11:30:23 2016 Shinichi Maeshima <netwillnet@gmail.com>
* lib/rubygems.rb: Fix `Gem.find_spec_for_exe` picks oldest gem.
https://github.com/travis-ci/travis-ci/issues/5798
https://github.com/rubygems/rubygems/pull/1566
* test/rubygems/test_gem.rb: ditto.
Mon Mar 28 11:26:31 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org>
* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.6.2.
Please see entries of 2.6.2 on
https://github.com/rubygems/rubygems/blob/master/History.txt
Mon Mar 28 11:02:31 2016 Hiroshi Shirosaki <h.shirosaki@gmail.com>
* lib/rubygems/test_case.rb: Fix test on Windows for inconsistent temp path.
https://github.com/rubygems/rubygems/pull/1554
[Bug #12193][ruby-core:74431]
Mon Mar 28 08:19:49 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* sprintf.c (rb_str_format): refactor floating point format of
Rational by using gereric Integer functions.
* sprintf.c (rb_str_format): fix buffer overflow, length must be
greater than precision. reported by William Bowling <will AT
wbowling.info>.
Sun Mar 27 12:13:37 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* sprintf.c (rb_str_format): convert Rational to floating point
format by using gereric Integer functions, not by methods which
can be overwritten.
Sat Mar 26 10:55:12 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* numeric.c (rb_int2str): conversion function to String for
generic Integer.
* numeric.c (rb_int_round): rounding function for generic
Integers.
* numeric.c (rb_int_{uminus,plus,minus,mul,idiv,modulo}): basic
arithmetic functions for generic Integers.
* numeric.c (FIXNUM_{POSITIVE,NEGATIVE,ZERO}_P): predict macros
only for Fixnum.
Sat Mar 26 06:34:24 2016 NARUSE, Yui <naruse@ruby-lang.org>
* localeinit.c (rb_locale_charmap_index): fix prototype.
patched by Andreas Schwab [Bug #12218]
Fri Mar 25 16:40:48 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* test/ruby/enc/test_case_mapping.rb: Additional tests title case;
some not yet activated.
Fri Mar 25 13:38:11 2016 Kazuki Yamaguchi <k@rhe.jp>
* ext/openssl/extconf.rb: check SSL_CTX_set_next_proto_select_cb
function rather than OPENSSL_NPN_NEGOTIATED macro. it exists
even if it is disabled by OpenSSL configuration.
[ruby-core:74384] [Bug #12182]
* ext/openssl/ossl_ssl.c: update #ifdef(s) as above.
* test/openssl/test_ssl.rb: skip NPN tests if NPN is disabled.
Fri Mar 25 11:08:37 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/uri/http.rb (URI::HTTP#initialize): [DOC] fix example,
missing mandatory arguments. [ruby-core:74540] [Bug #12215]
Fri Mar 25 01:50:58 2016 NARUSE, Yui <naruse@ruby-lang.org>
* thread_pthread.c (reserve_stack): fix reserving position where
the stack growing bottom to top. [Bug #12118]
Fri Mar 25 01:10:42 2016 Sebastian Schuberth <sschuberth@gmail.com>
* lib/mkmf.rb (find_executable0): On Windows, it is actually valid
to surround individual PATH directory entries with double
quotes. Remove these before joining the path as otherwise the
literal quotes would become part of the path, resulting in the
executable not to be found. [Fix GH-1305]
Thu Mar 24 22:38:18 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* strftime.c (FMT, FMTV): remove recursive-assignments to get rid
of undefined behavior. [ruby-core:74532] [Bug #12213]
Thu Mar 24 17:44:02 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* strftime.c (FMT_PADDING): extract format for padding.
* strftime.c (FMT_PRECISION): extract precision formula.
* strftime.c (FMTV): append formatted string to expand the result.
Thu Mar 24 14:20:21 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* strftime.c (STRFTIME): deal with case conversion flags for
recursive formats.
Thu Mar 24 12:43:26 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/date/date_core.c (dt_lite_iso8601): strftimev() always
returns a String, so append them directly.
* ext/date/date_core.c (d_lite_jisx0301, iso8601_timediv),
(dt_lite_jisx0301): format by the format string in local buffer
to prevent intermediate strings from GC.
* ext/date/date_core.c (mk_inspect_raw, mk_inspect): inspect by
"%+"PRIsVALUE, to prevent intermediate strings from GC.
Thu Mar 24 11:43:32 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* strftime.c (rb_strftime_with_timespec): remove unnecessary
check, as `s` equals to `endp` when recursed STRFTIME resized
the capacity same as the size.
Wed Mar 23 21:48:00 2016 Kenta Murata <mrkn@mrkn.jp>
* enum.c (ary_inject_op): put subtract operation out of if-clause.
Wed Mar 23 21:38:00 2016 Kenta Murata <mrkn@mrkn.jp>
* enum.c (ary_inject_op): Use Kahan's compensated summation algorithm
for summing up float values.
Wed Mar 23 20:56:59 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* strftime.c (rb_strftime_with_timespec): append formatted results
to the given string with expanding, and also deal with NUL chars.
* strftime.c (rb_strftime, rb_strftime_timespec): return formatted
string, not the length put in the given buffer.
* time.c (rb_strftime_alloc): no longer needs to retry with
reallocating buffers.
* time.c (time_strftime): no longer needs to split by NUL chars.
Wed Mar 23 14:23:54 2016 NARUSE, Yui <naruse@ruby-lang.org>
* lib/rdoc/ri/driver.rb (interactive): rescue NotFoundError raised in
expand_name. (display_name rescues NotFoundError by itself,
the original logic looks buggy...)
Wed Mar 23 11:44:53 2016 cremno <cremno@mail.ru>
* marshal.c (r_long): cast to `signed char`, which is used
already, instead of SIGN_EXTEND_CHAR.
* parse.y: SIGN_EXTEND_CHAR is no longer used. [Fix GH-1302]
Wed Mar 23 11:38:47 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* cygwin/GNUmakefile.in (MSYS2_ARG_CONV_EXCL_PARAM):
* add missing parentheses and remove double quotes.
* rename to get rid of recursive references.
* as --excludes-dir option is for a path name, its argument
should be converted.
[ruby-dev:49526] [Bug #12199]
Wed Mar 23 10:39:38 2016 Koichi ITO <koic.ito@gmail.com>
* variable.c: Added documentation about order of `Module#constants`
[ci skip][Bug #12121][ruby-dev:49505][fix GH-1301]
Tue Mar 22 21:08:30 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* include/ruby/oniguruma.h: Additional flag for characters that are titlecase.
* enc/unicode/case-folding.rb, casefold.h: Using above flag in data.
* enc/unicode.c: Marking capitalized character as unmodified if it is
already titlecase.
* test/ruby/enc/test_case_mapping.rb: Tests for above functionality.
Tue Mar 22 14:18:59 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (lambda_body, parser_yylex): warn mismatched indentation
of lambda block.
Tue Mar 22 11:36:49 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* time.c (wmul): wrong condition.
fixed many test failures on 32bit and LLP64 platforms.
Tue Mar 22 10:31:34 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* time.c (wdiv, wmod): wdivmod0() assumes the 3rd and the 4th arguments
are valid pointers.
maybe checking them in wdivmod0() is better manner, but I guess that
passing real dummy pointers may be faster than checking and branching
in wdivmod0().
this commit fixes SEGV on 32bit and LLP64 platforms.
Tue Mar 22 10:24:04 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* time.c (divmodv): void function never returns any value.
Tue Mar 22 10:11:01 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* test/lib/test/unit.rb (Test::Unit::StatusLine#failed): print
failed messages only if replacing mode, otherwise defer them
until the end, to get rid of interleaving failures with progress
messages. refix r54195.
Tue Mar 22 03:45:03 2016 NARUSE, Yui <naruse@ruby-lang.org>
* time.c (MUL_OVERFLOW_FIXWV_P): defined for FIXWV.
* time.c (wmul): use MUL_OVERFLOW_FIXWV_P and only switch.
* time.c (wmul): use mul which has Fixnum optimization.
* time.c (rb_time_magnify): If WIDEVALUE_IS_WIDER, wmul() has the same
optimized logic, else mul() has also the similar logic for Fixnum.
* time.c (rb_time_unmagnify): almost ditto.
Tue Mar 22 03:10:09 2016 NARUSE, Yui <naruse@ruby-lang.org>
* time.c (divmodv): add the case both arguments are Fixnum.
* time.c (wquo): use quo which has Fixnum optimization.
* time.c (wdivmod0): added for WIDEVALUE_IS_WIDER.
* time.c (wdivmod): use wdivmod0 and divmodv.
divmodv has Fixnum optimization.
* time.c (wdiv): use wdivmod0 and div to avoid the use of divmodv which
calls id_quo whose return value is array.
* time.c (wmod): use wdivmod0 and mod to avoid the use of divmodv which
calls id_quo whose return value is array.
Mon Mar 21 22:32:50 2016 NARUSE, Yui <naruse@ruby-lang.org>
* internal.h (rb_fix_divmod_fix): like r54213, use FIX2NUM only if
x == FIXNUM_MIN && y == -1. This must be a rare case and it is
expected compiler to handle well.
Mon Mar 21 22:15:11 2016 NARUSE, Yui <naruse@ruby-lang.org>
* time.c (mod): Add Fixnum case.
* time.c (quo): c can be Fixnum except a == FIXNUM_MIN && b == -1.
Such case can be optimized out because quo()'s argument is constant.
Mon Mar 21 22:09:24 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* internal.h (rb_fix_mul_fix): multiply converted values, not
object VALUEs.
Mon Mar 21 20:18:29 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* common.mk (TEST_EXCLUDES, EXCLUDE_TESTFRAMEWORK): use full spell
long option.
* cygwin/GNUmakefile.in (MSYS2_ARG_CONV_EXCL): suppress path name
conversions by msys2. [ruby-dev:49525] [Bug #12199]
Mon Mar 21 19:09:31 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (enc_succ_alnum_char): try to skip an invalid character
gap between GREEK CAPITAL RHO and SIGMA.
[ruby-core:74478] [Bug #12204]
Mon Mar 21 18:55:49 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* node.c (rb_gc_mark_node): NODE_MATCH2 can have nd_args, u3,
since r54100.
Sun Mar 20 21:17:13 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* internal.h (rb_int128t2big): declare only when HAVE_INT128_T.
fixed a compile error with VC++ introduced at r54203.
Sun Mar 20 20:10:14 2016 NARUSE, Yui <naruse@ruby-lang.org>
* internal.h (DLONG): defined if long is 32bit (and LONG_LONG is 64bit;
but LONG_LONG is always defined as 64bit), or there's int128_t.
* internal.h (DL2NUM): defined if DLONG is defined.
* internal.h (rb_fix_mul_fix): defined for `Fixnum * Fixnum`.
* insns.def (opt_mul): use rb_fix_mul_fix().
* numeric.c (fix_mul): ditto.
* time.c (mul): ditto.
Sun Mar 20 18:53:49 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* numeric.c (fix_gt, fix_ge, fix_lt, fix_le): optimize comparisons
Fixnum against Bignum by rb_big_cmp in inversed order without
new Bignum instance.
Sun Mar 20 18:44:52 2016 NARUSE, Yui <naruse@ruby-lang.org>
* time.c (add): remove FIXABLE() which is in LONG2NUM().
* time.c (sub): ditto.
* time.c (mul): ditto.
Sun Mar 20 04:46:02 2016 NARUSE, Yui <naruse@ruby-lang.org>
* bignum.c (rb_big_cmp): reduce the code.
* bignum.c (rb_big_eq): If normalized bignum is still bignum,
it must be larger than fixnum.
Sat Mar 20 00:58:00 2016 Kenta Murata <mrkn@mrkn.jp>
* include/ruby/intern.h (rb_big_odd_p, rb_big_even_p): move to
internal.h so that they are exported only for ruby itself.
* internal.h (rb_big_odd_p, rb_big_even_p): ditto.
Sat Mar 19 21:56:23 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* test/lib/test/unit.rb (Test::Unit::StatusLine#failed): defer
failed messages until the end in verbose mode, to get rid of
interleaving failures with progress messages.
Sat Mar 19 21:53:35 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* numeric.c (fix_cmp): invert the result as the comparison is
inverted.
Sat Mar 19 18:32:00 2016 Kenta Murata <mrkn@mrkn.jp>
* numeric.c (int_to_f): raise NotImplementedError when a receiver
class is unknown.
* test/-ext-/integer/test_my_integer.rb (test_my_integer_to_f): modify
a test for the above change.
Sat Mar 19 18:21:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (Bignum#<=>): remove it because they are unified with
Integer#<=>.
* numeric.c (Integer#<=>, Fixnum#<=>): move <=> method from Fixnum to
Integer.
* numeric.c (int_cmp): add this method for Integer#<=>.
* test/-ext-/integer/test_my_integer.rb (test_my_integer_cmp): add a
test to examine Integer#<=> for unknown subclasses.
Sat Mar 19 14:46:18 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* iseq.c (rb_iseq_compile_with_option): make the parser in mild
error.
* load.c (rb_load_internal0): ditto.
* parse.y (yycompile0): return the error message within the error
to be raised. [Feature #11951]
* parse.y (parser_compile_error): accumulate error messages in the
error_buffer.
Sat Mar 19 03:57:13 2016 NARUSE, Yui <naruse@ruby-lang.org>
* time.c (LOCALTIME): organize #ifdefs.
* time.c (GMTIME): define only ifndef HAVE_STRUCT_TM_TM_GMTOFF.
Sat Mar 19 03:53:31 2016 NARUSE, Yui <naruse@ruby-lang.org>
* configure.in (rb_cv_member_struct_tm_tm_gmtoff): For Linux (glibc)
define _BSD_SOURCE for time.h to define struct tm.tm_gmtoff.
* time.c: define _BSD_SOURCE at the top.
Sat Mar 19 03:00:50 2016 Rei Odaira <Rei.Odaira@gmail.com>
* test/-ext-/time/test_new.rb (test_timespec_new): change a gmtoff
test to a better one that does not depend on whether the current
time is in summer time or not.
Fri Mar 19 00:00:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (rb_big_to_f, Bignum#to_f): removed them because they are
unified with int_to_f and Integer#to_f.
* numeric.c (int_to_f): treat Bignum values directly.
Fri Mar 18 23:41:00 2016 Kenta Murata <mrkn@mrkn.jp>
* numeric.c (int_to_f, fix_to_f): rename fix_to_f to int_to_f, and add
treatment for subclasses which don't have definitions of to_f method.
* numeric.c (Integer#to_f, Fixnum#to_f): move to_f method from Fixnum
to Integer.
* ext/-test-/integer/my_integer.c: define helper class for testing
to_f method for a subclass of Integer.
* ext/-test-/integer/extconf.rb: ditto.
* ext/-test-/integer/init.c: ditto.
* test/-ext-/integer/test_my_integer.rb: examine to_f method for a
subclass of Integer.
Fri Mar 18 22:32:00 2016 Kenta Murata <mrkn@mrkn.jp>
* include/ruby/intern.h (rb_big_hash): Move to internal.h.
* internal.h: ditto.
Fri Mar 18 22:10:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (Bignum#eql?): remove its definition because it is unified
with Numeric#eql?.
* numeric.c (num_eql): treat Bignum values directly.
Fri Mar 18 21:57:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (rb_big_to_s, Bignum#to_s): remove its definition because
it is unified with Integer#to_s.
* numeric.c (int_to_s): treat Bignum values directly.
Fri Mar 18 21:30:00 2016 Kenta Murata <mrkn@mrkn.jp>
* numeric.c (int_to_s): Move from fix_to_s.
* numeric.c (Integer#to_s): Move from Fixnum#to_s.
Fri Mar 18 16:22:24 2016 Victor Nawothnig <Victor.Nawothnig@gmail.com>
* parse.y (parse_numvar): NTH_REF must be less than a half of
INT_MAX, as it is left-shifted to be ORed with back-ref flag.
[ruby-core:74444] [Bug#12192] [Fix GH-1296]
Fri Mar 18 12:25:30 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* gc.c (tick): fix missing close parenthesis. [Fix GH-1291]
Fri Mar 18 10:24:12 2016 Naotoshi Seo <sonots@gmail.com>
* ext/date/date_core.c (datetime_to_time): preserve timezone info
[Bug #12189] [Fix GH-1295]
Fri Mar 18 10:17:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (rb_big_hash): make it public function to be available in
other source files, and remove documentation comment for Bignum#hash.
* bignum.c (Bignum#hash): remove its definition because it is unified
with Object#hash.
* include/ruby/intern.h (rb_big_hash): add a prototype declaration.
* hash.c (any_hash): treat Bignum values directly.
Fri Mar 18 02:35:12 2016 Naotoshi Seo <sonots@gmail.com>
* lib/time.rb (parse, strptime): Fix Time.parse/strptime does not
have compatibility with DateTime.parse/strptime in terms of parsing
timezone [Bug #12190] [Fix GH-1297]
Fri Mar 18 02:17:00 2016 Kenta Murata <mrkn@mrkn.jp>
* numeric.c (fix_zero_p, fix_even_p, fix_odd_p): remove needless
functions.
Fri Mar 18 02:15:00 2016 Kenta Murata <mrkn@mrkn.jp>
* numeric.c (int_even_p): treat Fixnum and Bignum values directly.
Fri Mar 18 02:07:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (Bignum#even?, Bignum#odd?): remove definitions
because they are unified with Integer#even? and Integer#odd?.
* numeric.c (Fixnum#zero?, Fixnum#even?, Fixnum#odd?): remove
definitions because they are unified with Numeric#zero?,
Integer#even?, and Integer#odd?.
* numeric.c (num_zero_p, int_odd_p): treat Fixnum and
Bignum values directly.
* test/ruby/test_integer.rb (test_odd_p_even_p): remove meaningless
test case.
Fri Mar 18 01:51:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (rb_big_even_p, rb_big_odd_p): make them public functions
to be available in other source files.
* include/ruby/intern.h (rb_big_even_p, rb_big_odd_p): add prototype
declarations.
Fri Mar 18 00:25:56 2016 Tanaka Akira <akr@fsij.org>
* enum.c (ary_inject_op): Implement the specialized code for sum of
float numbers.
Fri Mar 18 00:15:05 2016 Yusuke Endoh <mame@ruby-lang.org>
* numeric.c (num_step): use rb_equal for zero check. rb_num_coerce_cmp
created an object which caused extra overhead.
Thu Mar 17 22:21:34 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* include/ruby/ruby.h (RB_GC_GUARD_PTR): remove intermediate
macro, and expand for each RB_GC_GUARD. [Fix GH-1293]
Thu Mar 17 22:08:33 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* compile.c (iseq_specialized_instruction): move specialization
for opt_newarray_max/min from translation phase.
Thu Mar 17 21:52:09 2016 Yusuke Endoh <mame@ruby-lang.org>
* array.c, enum.c: make rdoc format consistent.
Thu Mar 17 21:47:57 2016 Yusuke Endoh <mame@ruby-lang.org>
* NEWS: add Array#max, #min, and the optimization. [Feature #12172]
Thu Mar 17 21:45:02 2016 Yusuke Endoh <mame@ruby-lang.org>
* compile.c (NODE_CALL): add optimization shortcut for Array#max/min.
Now `[x, y].max` is optimized so that a temporal array object is not
created in some condition. [Feature #12172]
* insns.def (opt_newarray_max, opt_newarray_min): added.
Thu Mar 17 21:35:52 2016 Yusuke Endoh <mame@ruby-lang.org>
* array.c (rb_ary_max, rb_ary_min): implement Array#max and min with
arguments. replace super call with rb_nmin_run.
* enum.c (nmin_run): exported (as rb_nmin_run).
* internal.h: added a prototype for rb_nmin_run.
Thu Mar 17 21:24:52 2016 Yusuke Endoh <mame@ruby-lang.org>
* array.c (rb_ary_max, rb_ary_min): implement a block by itself instead
of delegating Enumerable#max/min.
Thu Mar 17 21:09:34 2016 Yusuke Endoh <mame@ruby-lang.org>
* array.c (rb_ary_max, rb_ary_min): Array#max and Array#min added.
[Feature #12172]
* internal.h (OPTIMIZED_CMP): moved from enum.c so that array.c can
use it.
* test/ruby/test_array.rb (test_max, test_min): tests for Array#max
and Array#min.
* test/ruby/test_enum.rb (test_max, test_min): revised a bit to test
Enumerable#max and #min explicitly.
Thu Mar 17 21:02:42 2016 Yusuke Endoh <mame@ruby-lang.org>
* internal.c: struct cmp_opt_data added for refactoring out a data
structure for CMP_OPTIMIZABLE
* array.c (struct ary_sort_data): use struct cmp_opt_data.
* enum.c (struct min_t, max_t, min_max_t): use struct cmp_opt_data.
Thu Mar 17 20:55:21 2016 Tanaka Akira <akr@fsij.org>
* enum.c (ary_inject_op): Extracted from enum_inject.
Thu Mar 17 18:39:04 2016 Tanaka Akira <akr@fsij.org>
* enum.c (enum_inject): Implement the specialized code for sum of
integers including Bignums.
* internal.h (rb_fix_plus): Declared to be usable from enum_inject.
* numeric.c (rb_fix_plus): Defined.
Thu Mar 17 17:20:28 2016 Anton Davydov <antondavydov.o@gmail.com>
* thread_sync.c: [DOC] Update documentation for Queue class
description. [Fix GH-1292]
Thu Mar 17 17:14:51 2016 Dinar Valeev <dvaleev@suse.com>
* gc.c (tick): Use __builtin_ppc_get_timebase for POWER arch.
[Fix GH-1291]
Thu Mar 17 11:51:48 2016 NARUSE, Yui <naruse@ruby-lang.org>
* lib/securerandom.rb (gen_random): to avoid blocking on Windows.
On Windows OpenSSL RAND_bytes (underlying implementation is
RAND_poll in crypto/rand/rand_win.c) may be blocked at
NetStatisticsGet.
https://wiki.openssl.org/index.php/Random_Numbers#Windows_Issues
Instead of this, use Random.raw_seed directory (whose implementation
CryptGenRandom is one of the source of
entropy of RAND_poll on Windows).
https://wiki.openssl.org/index.php/Random_Numbers
Note: CryptGenRandom function is PRNG and doesn't check its entropy,
so it won't block. [Bug #12139]
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa379942.aspx
https://tools.ietf.org/html/rfc4086#section-7.1.3
https://eprint.iacr.org/2007/419.pdf
http://www.cs.huji.ac.il/~dolev/pubs/thesis/msc-thesis-leo.pdf
Thu Mar 17 12:09:00 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
* enc/unicode.c: Fixed two macro definitions.
* test/ruby/enc/test_case_mapping.rb: Test cases that detected
the above bugs.
Thu Mar 17 11:36:27 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/socket/option.c (inspect_tcpi_msec): more accurate condition
for TCPI msec member inspection function.
[ruby-core:74388] [Bug #12185]
Thu Mar 17 08:13:43 2016 Rei Odaira <Rei.Odaira@gmail.com>
* test/-ext-/time/test_new.rb (test_timespec_new): Time#gmtoff values
are the same only when both or neither of the Time objects are in
summer time (daylight-saving time).
Thu Mar 17 07:17:36 2016 Eric Hodel <drbrain@segment7.net>
* marshal.c (r_object0): raise ArgumentError when linking to undefined
object.
Thu Mar 17 00:45:00 2016 Kenta Murata <mrkn@mrkn.jp>
* test/ruby/test_bignum.rb: Make sure to use Bignum values in the tests.
Wed Mar 16 23:10:25 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>