aboutsummaryrefslogtreecommitdiffstats
path: root/time.c
Commit message (Collapse)AuthorAgeFilesLines
* merge revision(s) 99a9c3fe2eaab8157765d792dc871da6daea0327: [Backport #17024]nagachika2020-07-231-4/+9
| | | | Fixed yday and wday with timezone [Bug #17024]
* [DOC] Fix typo in Time#inspectMarcus Stollsteimer2019-12-241-2/+2
|
* Actualize Time#inspect docszverok2019-12-221-5/+6
|
* Fixed misspellingsNobuyoshi Nakada2019-12-201-1/+1
| | | | Fixed misspellings reported at [Bug #16437], only in ruby and rubyspec.
* Reduce tzset callsNobuyoshi Nakada2019-12-171-7/+10
| | | | Set up-to-date flag always when calling tzset().
* time.c (find_time_t): fix round-to-zero bugYusuke Endoh2019-12-171-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | `find_time_t` did not work correctly for year older than the Epoch because it used C's integer division (which rounds negative to zero). For example, `TIme.new(1933)` returned a wrong time whose year is 1922 in Asia/Kuala_Lumpur because there is no 00:00:00 1st Jan. 1933 in the time zone. ``` $ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)' 1932-12-31 00:00:00 +0700 ``` This change fixes the issue by using `DIV` macro instead of `/`. Now `Time.new(1933)` returns a time in 1933. ``` $ TZ=Asia/Kuala_Lumpur ruby -e 'p Time.new(1933)' 1933-01-01 00:20:00 +0720 ``` [Bug #16159]
* fix typoKOSAKI Motohiro2019-12-031-1/+1
|
* Avoid unnecessary tzset() callKOSAKI Motohiro2019-12-011-8/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Akatsuki reported ENV['TZ'] = 'UTC' improved 7x-8x faster on following code. t = Time.now; 100000.times { Time.new(2019) }; Time.now - t https://hackerslab.aktsk.jp/2019/12/01/141551 commit 4bc1669127(reduce tzset) dramatically improved this situation. But still, TZ=UTC is faster than default. This patch removs unnecessary tzset() call completely. Performance check ---------------------- test program: t = Time.now; 100000.times { Time.new(2019) }; Time.now - t before: 0.387sec before(w/ TZ): 0.197sec after: 0.162sec after(w/ TZ): 0.165sec OK. Now, Time creation 2x faster *and* TZ=UTC doesn't improve anything. We can forget this hack completely. :) Side note: This patch slightly changes Time.new(t) behavior implicitly. Before this patch, it might changes default timezone implicitly. But after this patch, it doesn't. You need to reset TZ (I mean ENV['TZ'] = nil) explicitly. But I don't think this is big impact. Don't try to change /etc/localtime on runtime. Side note2: following test might be useful for testing "ENV['TZ'] = nil". ----------------------------------------- % cat <<'End' | sudo sh -s rm -f /etc/localtime-; cp -a /etc/localtime /etc/localtime- rm /etc/localtime; ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime ./ruby -e ' p Time.new(2000).zone # JST File.unlink("/etc/localtime"); File.symlink("/usr/share/zoneinfo/America/Los_Angeles", "/etc/localtime") p Time.new(2000).zone # JST (ruby does not follow /etc/localtime modification automatically) ENV["TZ"] = nil p Time.new(2000).zone # PST (ruby detect /etc/localtime modification) ' rm /etc/localtime; cp -a /etc/localtime- /etc/localtime; rm /etc/localtime- End
* Improve consistency of bool/true/falseKazuhiro NISHIYAMA2019-11-251-1/+1
|
* Set TRUE/FALSE to `bool ruby_tz_uptodate_p` instead of 1/FALSEKazuhiro NISHIYAMA2019-11-251-1/+1
|
* Deprecate taint/trust and related methods, and make the methods no-opsJeremy Evans2019-11-181-1/+0
| | | | | | This removes the related tests, and puts the related specs behind version guards. This affects all code in lib, including some libraries that may want to support older versions of Ruby.
* Check more likely condition first [Feature #16335]Nobuyoshi Nakada2019-11-131-1/+10
|
* time.c: Fix some bugs about WIDEVALUEYusuke Endoh2019-10-061-4/+4
| | | | | | | | WIDEVALUE differs from VALUE in 32bit platform, but some codes assume that they are the same. There is `#define STRUCT_WIDEVAL` mode to check the consistency. This change allows to build with STRUCT_WIDEVAL.
* Specify encoding explicitly for sprintfNARUSE, Yui2019-09-191-1/+1
|
* Separate Time#inspect from to_s and show subsec [Feature #15958]NARUSE, Yui2019-09-191-3/+48
|
* Support timeout for AddrinfoMasaki Matsushita2019-09-101-0/+6
| | | | | | | | | | | | Addrinfo.getaddrinfo and .foreach now accepts :timeout in seconds as a keyword argument. If getaddrinfo_a(3) is available, the timeout will be applied for name resolution. Otherwise, it will be ignored. Socket.tcp accepts :resolv_timeout to use this feature. This commit is retry of 6382f5cc91ac9e36776bc854632d9a1237250da7. Test was failed on Solaris machines which don't have "http" in /etc/services. In this commit, use "ssh" instead.
* Revert "Support timeout for Addrinfo"Masaki Matsushita2019-09-091-6/+0
| | | | | This reverts commit 6382f5cc91ac9e36776bc854632d9a1237250da7. test failed on Solaris.
* Support timeout for AddrinfoMasaki Matsushita2019-09-091-0/+6
| | | | | | | | Addrinfo.getaddrinfo and .foreach now accepts :timeout in seconds as a keyword argument. If getaddrinfo_a(3) is available, the timeout will be applied for name resolution. Otherwise, it will be ignored. Socket.tcp accepts :resolv_timeout to use this feature.
* rb_rescue / rb_rescue2 now free from ANYARGS卜部昌平2019-08-271-1/+1
| | | | | | After 5e86b005c0f2ef30df2f9906c7e2f3abefe286a2, I now think ANYARGS is dangerous and should be extinct. This commit deletes ANYARGS from rb_rescue / rb_rescue2, which revealed many arity / type mismatches.
* Refine time_to_rNobuyoshi Nakada2019-08-061-5/+16
| | | | | * time.c (time_to_r): get rid canonicalize and uncanonicalize one-denominator rational, by rb_time_unmagnify_to_rational.
* Predefine some IDsNobuyoshi Nakada2019-08-031-8/+7
|
* Document that Timezone argument for Time uses dst? if available [ci skip]Jeremy Evans2019-07-291-1/+4
|
* Initialize DST flagNobuyoshi Nakada2019-07-271-0/+13
| | | | | * time.c (zone_timelocal): initialize DST flag by asking the timezone object. [Bug #15988]
* Expanded buf to copy at onceNobuyoshi Nakada2019-07-171-6/+9
| | | | | | | Build dumped string from base packed data and extended year at once. Although currently ruby_marshal_write_long() never writes more than 5 bytes per its format specification, allocate `sizeof(long)+1` for the sanitation.
* Named the backward compatible dump sizeNobuyoshi Nakada2019-07-171-6/+8
|
* time.c (time_mdump): use another buffer for year_extendYusuke Endoh2019-07-151-3/+3
| | | | | ruby_marshal_write_long may write 9 bytes, but buf has only 8 bytes. So the buffer cannot be reused. This issue was found by Coverity Scan.
* Add a /* fall through */ commentYusuke Endoh2019-07-141-0/+1
|
* Marshal distant past/futureNobuyoshi Nakada2019-06-191-8/+67
| | | | [Feature #15160]
* [DOC] Use Rational literals than to_r in examplesNobuyoshi Nakada2019-05-241-3/+3
|
* Hoisted out ndigits_denominatorNobuyoshi Nakada2019-05-241-51/+24
| | | | | * time.c (ndigits_denominator): calculate the denominator for digits.
* * expand tabs.git2019-05-231-1/+1
|
* Add `Time#ceil`.manga_osyo2019-05-231-0/+62
| | | | Closes: https://github.com/ruby/ruby/pull/2133
* [DOC] Shorten examples for Time#{round,floor}Marcus Stollsteimer2019-05-181-12/+0
|
* [DOC] Improve documentation for Time#floorMarcus Stollsteimer2019-05-181-4/+2
| | | | Use numbers that are more illustrative for #floor.
* Add a pathologic checkNobuyoshi Nakada2019-05-041-0/+3
|
* * expand tabs.svn2019-04-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67633 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add `Time#floor`nobu2019-04-201-0/+70
| | | | | | | | | [Feature #15653] [Fix GH-2092] From: manga_osyo <manga.osyo@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: added in: option to Time.nownobu2019-04-191-9/+28
| | | | | | | * time.c (time_s_now): added in: option to Time.now as well as Time.at. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67613 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: [DOC] small improvementstomar2019-01-201-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: separate sign argumentnobu2019-01-131-8/+4
| | | | | | | * time.c (vtm_add_offset): separate sign argument to get rid of repeated negations. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: do not set utc_offset in vtm_add_offsetnobu2019-01-131-2/+0
| | | | | | | | * time.c (vtm_add_offset): just add offset to other components only. removed subtraction of utc_offset as it is overwritten always immediately in callers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66803 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: update error message for invalid utc_offsetnobu2019-01-091-1/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: support military time zone namesnobu2019-01-071-0/+13
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66747 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: UTC and Z timezones should be utcnobu2019-01-071-3/+36
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66746 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: zone in fixoff modenobu2018-12-241-0/+1
| | | | | | | | | * time.c (time_set_utc_offset): reset zone when setting to fixoff mode. while previously TZMODE_SET_FIXOFF has reset it always, the zone is kept for loaded zone since r65025. [ruby-core:90627] [Bug #15439] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Range check is only for interavalnobu2018-12-171-12/+18
| | | | | | | * time.c (time_timespec): range check is only for time interval value if time_t is signed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Refine error message for time intervalnobu2018-12-161-4/+4
| | | | | | | | | * time.c (time_timespec): Time interval value can be zero, not only positive. [ruby-dev:50709] [Bug #15420] From: shuujii (Shuji KOBAYASHI) <shuujii@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: [DOC] improve docs for tz argument of Time.newstomar2018-12-151-5/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c: improve docs for Timestomar2018-12-131-44/+44
| | | | | | | * time.c: [DOC] fix typos, drop unnecessary `p' from code examples, add missing `#' for return values, other small improvements. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Prefer rb_check_arity when 0 or 1 argumentsnobu2018-12-061-7/+3
| | | | | | | Especially over checking argc then calling rb_scan_args just to raise an ArgumentError. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e