date 3.0.3 → 3.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 458212a8cf5ab21beadd0ddd281f41a7f3fa9dfe50fcb7f52a2594941b11477f
4
- data.tar.gz: 0a100c588376c5e886558cf9d2cc131d643e5387a483378b99d9ff371aad593c
3
+ metadata.gz: 6ddb4e0b03782fac8cd04d3a56c721e602bc2a095c4473a5d15edb83b82428c7
4
+ data.tar.gz: 40e9c5995f3d0270e1407304559f749bfb537b712f0a3796539fb0c7140f3790
5
5
  SHA512:
6
- metadata.gz: fc7a13a9872d1c4b5b4f6495bdf3cb903b2d274dc06b3bd3d3b5a99f0be765e01bf449ae57bafb221fbf70dd3958ffbde9c76103c10971234a0724179c558b1f
7
- data.tar.gz: 63aacb8fc345a4dab53217a46f70a4dcdf7a0e7ace8d1450a36ef3b37e236f33d116a5228c44eefe45590f5bf8b608f0fe51d9d28c0f1f06915af113aaba7990
6
+ metadata.gz: c92038d2b0074ee5d7bd7b2cff52841a80847a489bcf61adc0bcefa3fe0b7f7408bd76216c6418b351a827b5e5c2cbe63aea8af394894b7bd40001af93fc4f0f
7
+ data.tar.gz: 6dfef0f8e5927fd45f7222bab46619000fec7c66482998141e76d1792b5c5babb366576df8bd2a7fcfcd94ea873bd745ef32491bebb7495c211358cd21c6ec2f
data/ext/date/date_core.c CHANGED
@@ -53,6 +53,8 @@ static double positive_inf, negative_inf;
53
53
  #define f_add3(x,y,z) f_add(f_add(x, y), z)
54
54
  #define f_sub3(x,y,z) f_sub(f_sub(x, y), z)
55
55
 
56
+ #define f_frozen_ary(...) rb_obj_freeze(rb_ary_new3(__VA_ARGS__))
57
+
56
58
  static VALUE date_initialize(int argc, VALUE *argv, VALUE self);
57
59
  static VALUE datetime_initialize(int argc, VALUE *argv, VALUE self);
58
60
 
@@ -2971,11 +2973,15 @@ d_lite_memsize(const void *ptr)
2971
2973
  return complex_dat_p(dat) ? sizeof(struct ComplexDateData) : sizeof(struct SimpleDateData);
2972
2974
  }
2973
2975
 
2976
+ #ifndef HAVE_RB_EXT_RACTOR_SAFE
2977
+ # define RUBY_TYPED_FROZEN_SHAREABLE 0
2978
+ #endif
2979
+
2974
2980
  static const rb_data_type_t d_lite_type = {
2975
2981
  "Date",
2976
2982
  {d_lite_gc_mark, RUBY_TYPED_DEFAULT_FREE, d_lite_memsize,},
2977
2983
  0, 0,
2978
- RUBY_TYPED_FREE_IMMEDIATELY|RUBY_TYPED_WB_PROTECTED,
2984
+ RUBY_TYPED_FREE_IMMEDIATELY|RUBY_TYPED_WB_PROTECTED|RUBY_TYPED_FROZEN_SHAREABLE,
2979
2985
  };
2980
2986
 
2981
2987
  inline static VALUE
@@ -3767,89 +3773,89 @@ rt_complete_frags(VALUE klass, VALUE hash)
3767
3773
  VALUE k, a, d;
3768
3774
 
3769
3775
  if (NIL_P(tab)) {
3770
- tab = rb_ary_new3(11,
3771
- rb_ary_new3(2,
3776
+ tab = f_frozen_ary(11,
3777
+ f_frozen_ary(2,
3772
3778
  sym("time"),
3773
- rb_ary_new3(3,
3779
+ f_frozen_ary(3,
3774
3780
  sym("hour"),
3775
3781
  sym("min"),
3776
3782
  sym("sec"))),
3777
- rb_ary_new3(2,
3783
+ f_frozen_ary(2,
3778
3784
  Qnil,
3779
- rb_ary_new3(1,
3785
+ f_frozen_ary(1,
3780
3786
  sym("jd"))),
3781
- rb_ary_new3(2,
3787
+ f_frozen_ary(2,
3782
3788
  sym("ordinal"),
3783
- rb_ary_new3(5,
3789
+ f_frozen_ary(5,
3784
3790
  sym("year"),
3785
3791
  sym("yday"),
3786
3792
  sym("hour"),
3787
3793
  sym("min"),
3788
3794
  sym("sec"))),
3789
- rb_ary_new3(2,
3795
+ f_frozen_ary(2,
3790
3796
  sym("civil"),
3791
- rb_ary_new3(6,
3797
+ f_frozen_ary(6,
3792
3798
  sym("year"),
3793
3799
  sym("mon"),
3794
3800
  sym("mday"),
3795
3801
  sym("hour"),
3796
3802
  sym("min"),
3797
3803
  sym("sec"))),
3798
- rb_ary_new3(2,
3804
+ f_frozen_ary(2,
3799
3805
  sym("commercial"),
3800
- rb_ary_new3(6,
3806
+ f_frozen_ary(6,
3801
3807
  sym("cwyear"),
3802
3808
  sym("cweek"),
3803
3809
  sym("cwday"),
3804
3810
  sym("hour"),
3805
3811
  sym("min"),
3806
3812
  sym("sec"))),
3807
- rb_ary_new3(2,
3813
+ f_frozen_ary(2,
3808
3814
  sym("wday"),
3809
- rb_ary_new3(4,
3815
+ f_frozen_ary(4,
3810
3816
  sym("wday"),
3811
3817
  sym("hour"),
3812
3818
  sym("min"),
3813
3819
  sym("sec"))),
3814
- rb_ary_new3(2,
3820
+ f_frozen_ary(2,
3815
3821
  sym("wnum0"),
3816
- rb_ary_new3(6,
3822
+ f_frozen_ary(6,
3817
3823
  sym("year"),
3818
3824
  sym("wnum0"),
3819
3825
  sym("wday"),
3820
3826
  sym("hour"),
3821
3827
  sym("min"),
3822
3828
  sym("sec"))),
3823
- rb_ary_new3(2,
3829
+ f_frozen_ary(2,
3824
3830
  sym("wnum1"),
3825
- rb_ary_new3(6,
3831
+ f_frozen_ary(6,
3826
3832
  sym("year"),
3827
3833
  sym("wnum1"),
3828
3834
  sym("wday"),
3829
3835
  sym("hour"),
3830
3836
  sym("min"),
3831
3837
  sym("sec"))),
3832
- rb_ary_new3(2,
3838
+ f_frozen_ary(2,
3833
3839
  Qnil,
3834
- rb_ary_new3(6,
3840
+ f_frozen_ary(6,
3835
3841
  sym("cwyear"),
3836
3842
  sym("cweek"),
3837
3843
  sym("wday"),
3838
3844
  sym("hour"),
3839
3845
  sym("min"),
3840
3846
  sym("sec"))),
3841
- rb_ary_new3(2,
3847
+ f_frozen_ary(2,
3842
3848
  Qnil,
3843
- rb_ary_new3(6,
3849
+ f_frozen_ary(6,
3844
3850
  sym("year"),
3845
3851
  sym("wnum0"),
3846
3852
  sym("cwday"),
3847
3853
  sym("hour"),
3848
3854
  sym("min"),
3849
3855
  sym("sec"))),
3850
- rb_ary_new3(2,
3856
+ f_frozen_ary(2,
3851
3857
  Qnil,
3852
- rb_ary_new3(6,
3858
+ f_frozen_ary(6,
3853
3859
  sym("year"),
3854
3860
  sym("wnum1"),
3855
3861
  sym("cwday"),
@@ -4373,8 +4379,12 @@ date_s__parse_internal(int argc, VALUE *argv, VALUE klass)
4373
4379
  * Date._parse(string[, comp=true], limit: 128) -> hash
4374
4380
  *
4375
4381
  * Parses the given representation of date and time, and returns a
4376
- * hash of parsed elements. This method does not function as a
4377
- * validator.
4382
+ * hash of parsed elements.
4383
+ *
4384
+ * This method **does not** function as a validator. If the input
4385
+ * string does not match valid formats strictly, you may get a cryptic
4386
+ * result. Should consider to use `Date._strptime` or
4387
+ * `DateTime._strptime` instead of this method as possible.
4378
4388
  *
4379
4389
  * If the optional second argument is true and the detected year is in
4380
4390
  * the range "00" to "99", considers the year a 2-digit form and makes
@@ -4397,7 +4407,12 @@ date_s__parse(int argc, VALUE *argv, VALUE klass)
4397
4407
  * Date.parse(string='-4712-01-01'[, comp=true[, start=Date::ITALY]], limit: 128) -> date
4398
4408
  *
4399
4409
  * Parses the given representation of date and time, and creates a
4400
- * date object. This method does not function as a validator.
4410
+ * date object.
4411
+ *
4412
+ * This method **does not** function as a validator. If the input
4413
+ * string does not match valid formats strictly, you may get a cryptic
4414
+ * result. Should consider to use `Date.strptime` instead of this
4415
+ * method as possible.
4401
4416
  *
4402
4417
  * If the optional second argument is true and the detected year is in
4403
4418
  * the range "00" to "99", considers the year a 2-digit form and makes
@@ -8145,7 +8160,12 @@ datetime_s_strptime(int argc, VALUE *argv, VALUE klass)
8145
8160
  * DateTime.parse(string='-4712-01-01T00:00:00+00:00'[, comp=true[, start=Date::ITALY]], limit: 128) -> datetime
8146
8161
  *
8147
8162
  * Parses the given representation of date and time, and creates a
8148
- * DateTime object. This method does not function as a validator.
8163
+ * DateTime object.
8164
+ *
8165
+ * This method **does not** function as a validator. If the input
8166
+ * string does not match valid formats strictly, you may get a cryptic
8167
+ * result. Should consider to use `DateTime.strptime` instead of this
8168
+ * method as possible.
8149
8169
  *
8150
8170
  * If the optional second argument is true and the detected year is in
8151
8171
  * the range "00" to "99", makes it full.
@@ -9313,13 +9333,13 @@ d_lite_zero(VALUE x)
9313
9333
  void
9314
9334
  Init_date_core(void)
9315
9335
  {
9316
- #undef rb_intern
9317
- #define rb_intern(str) rb_intern_const(str)
9318
-
9319
- id_cmp = rb_intern("<=>");
9320
- id_le_p = rb_intern("<=");
9321
- id_ge_p = rb_intern(">=");
9322
- id_eqeq_p = rb_intern("==");
9336
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
9337
+ RB_EXT_RACTOR_SAFE(true);
9338
+ #endif
9339
+ id_cmp = rb_intern_const("<=>");
9340
+ id_le_p = rb_intern_const("<=");
9341
+ id_ge_p = rb_intern_const(">=");
9342
+ id_eqeq_p = rb_intern_const("==");
9323
9343
 
9324
9344
  half_days_in_day = rb_rational_new2(INT2FIX(1), INT2FIX(2));
9325
9345
 
@@ -9726,6 +9746,8 @@ Init_date_core(void)
9726
9746
  * A subclass of Date that easily handles date, hour, minute, second,
9727
9747
  * and offset.
9728
9748
  *
9749
+ * DateTime class is considered deprecated. Use Time class.
9750
+ *
9729
9751
  * DateTime does not consider any leap seconds, does not track
9730
9752
  * any summer time rules.
9731
9753
  *
@@ -9786,18 +9808,18 @@ Init_date_core(void)
9786
9808
  * === When should you use DateTime and when should you use Time?
9787
9809
  *
9788
9810
  * It's a common misconception that
9789
- * {William Shakespeare}[http://en.wikipedia.org/wiki/William_Shakespeare]
9811
+ * {William Shakespeare}[https://en.wikipedia.org/wiki/William_Shakespeare]
9790
9812
  * and
9791
- * {Miguel de Cervantes}[http://en.wikipedia.org/wiki/Miguel_de_Cervantes]
9813
+ * {Miguel de Cervantes}[https://en.wikipedia.org/wiki/Miguel_de_Cervantes]
9792
9814
  * died on the same day in history -
9793
9815
  * so much so that UNESCO named April 23 as
9794
- * {World Book Day because of this fact}[http://en.wikipedia.org/wiki/World_Book_Day].
9816
+ * {World Book Day because of this fact}[https://en.wikipedia.org/wiki/World_Book_Day].
9795
9817
  * However, because England hadn't yet adopted the
9796
- * {Gregorian Calendar Reform}[http://en.wikipedia.org/wiki/Gregorian_calendar#Gregorian_reform]
9797
- * (and wouldn't until {1752}[http://en.wikipedia.org/wiki/Calendar_(New_Style)_Act_1750])
9818
+ * {Gregorian Calendar Reform}[https://en.wikipedia.org/wiki/Gregorian_calendar#Gregorian_reform]
9819
+ * (and wouldn't until {1752}[https://en.wikipedia.org/wiki/Calendar_(New_Style)_Act_1750])
9798
9820
  * their deaths are actually 10 days apart.
9799
9821
  * Since Ruby's Time class implements a
9800
- * {proleptic Gregorian calendar}[http://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar]
9822
+ * {proleptic Gregorian calendar}[https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar]
9801
9823
  * and has no concept of calendar reform there's no way
9802
9824
  * to express this with Time objects. This is where DateTime steps in:
9803
9825
  *
@@ -9841,7 +9863,7 @@ Init_date_core(void)
9841
9863
  * #=> Fri, 04 May 1753 00:00:00 +0000
9842
9864
  *
9843
9865
  * As you can see, if we're accurately tracking the number of
9844
- * {solar years}[http://en.wikipedia.org/wiki/Tropical_year]
9866
+ * {solar years}[https://en.wikipedia.org/wiki/Tropical_year]
9845
9867
  * since Shakespeare's birthday then the correct anniversary date
9846
9868
  * would be the 4th May and not the 23rd April.
9847
9869
  *
@@ -9853,10 +9875,10 @@ Init_date_core(void)
9853
9875
  * making the same mistakes as UNESCO. If you also have to deal
9854
9876
  * with timezones then best of luck - just bear in mind that
9855
9877
  * you'll probably be dealing with
9856
- * {local solar times}[http://en.wikipedia.org/wiki/Solar_time],
9878
+ * {local solar times}[https://en.wikipedia.org/wiki/Solar_time],
9857
9879
  * since it wasn't until the 19th century that the introduction
9858
9880
  * of the railways necessitated the need for
9859
- * {Standard Time}[http://en.wikipedia.org/wiki/Standard_time#Great_Britain]
9881
+ * {Standard Time}[https://en.wikipedia.org/wiki/Standard_time#Great_Britain]
9860
9882
  * and eventually timezones.
9861
9883
  */
9862
9884
 
@@ -276,6 +276,7 @@ regcomp(const char *source, long len, int opt)
276
276
  VALUE pat;
277
277
 
278
278
  pat = rb_reg_new(source, len, opt);
279
+ rb_obj_freeze(pat);
279
280
  rb_gc_register_mark_object(pat);
280
281
  return pat;
281
282
  }
@@ -581,6 +581,7 @@ date__strptime_internal(const char *str, size_t slen,
581
581
  if (NIL_P(pat)) {
582
582
  pat = rb_reg_new(pat_source, sizeof pat_source - 1,
583
583
  ONIG_OPTION_IGNORECASE);
584
+ rb_obj_freeze(pat);
584
585
  rb_gc_register_mark_object(pat);
585
586
  }
586
587
 
data/ext/date/prereq.mk CHANGED
@@ -9,4 +9,4 @@ zonetab.h: zonetab.list
9
9
 
10
10
  .PHONY: update-zonetab
11
11
  update-zonetab:
12
- $(RUBY) -C $(srcdir) update-abbr.rb
12
+ $(RUBY) -C $(srcdir) update-abbr
@@ -47,12 +47,12 @@ utc, 0*3600
47
47
  wet, 0*3600
48
48
  at, -2*3600
49
49
  brst,-2*3600
50
- ndt, -(2*3600+1800)
50
+ ndt, -(1*3600+1800)
51
51
  art, -3*3600
52
52
  adt, -3*3600
53
53
  brt, -3*3600
54
54
  clst,-3*3600
55
- nst, -(3*3600+1800)
55
+ nst, -(2*3600+1800)
56
56
  ast, -4*3600
57
57
  clt, -4*3600
58
58
  akdt,-8*3600
@@ -62,7 +62,7 @@ hadt,-9*3600
62
62
  hdt, -9*3600
63
63
  yst, -9*3600
64
64
  ahst,-10*3600
65
- cat,-10*3600
65
+ cat,2*3600
66
66
  hast,-10*3600
67
67
  hst,-10*3600
68
68
  nt, -11*3600
@@ -82,7 +82,7 @@ fst, 2*3600
82
82
  mest, 2*3600
83
83
  mesz, 2*3600
84
84
  sast, 2*3600
85
- sst, 2*3600
85
+ sst, -11*3600
86
86
  bt, 3*3600
87
87
  eat, 3*3600
88
88
  eest, 3*3600
@@ -92,13 +92,13 @@ zp4, 4*3600
92
92
  zp5, 5*3600
93
93
  ist, (5*3600+1800)
94
94
  zp6, 6*3600
95
- wast, 7*3600
96
- cct, 8*3600
95
+ wast, 2*3600
96
+ cct, (6*3600+1800)
97
97
  sgt, 8*3600
98
98
  wadt, 8*3600
99
99
  jst, 9*3600
100
100
  kst, 9*3600
101
- east,10*3600
101
+ east,-6*3600
102
102
  gst, 10*3600
103
103
  eadt,11*3600
104
104
  idle,12*3600
data/lib/date.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  require 'date_core'
5
5
 
6
6
  class Date
7
- VERSION = '3.0.3' # :nodoc:
7
+ VERSION = '3.1.3' # :nodoc:
8
8
 
9
9
  def infinite?
10
10
  false
@@ -12,8 +12,6 @@ class Date
12
12
 
13
13
  class Infinity < Numeric # :nodoc:
14
14
 
15
- include Comparable
16
-
17
15
  def initialize(d=1) @d = d <=> 0 end
18
16
 
19
17
  def d() @d end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tadayoshi Funaba
@@ -30,6 +30,7 @@ files:
30
30
  - lib/date.rb
31
31
  homepage: https://github.com/ruby/date
32
32
  licenses:
33
+ - Ruby
33
34
  - BSD-2-Clause
34
35
  metadata: {}
35
36
  post_install_message: