[ruby-dev:52168] [Ruby Feature#21616] date ライブラリを deprecatedさせたい
Issue #21616 has been reported by jinroq (Jinroq SAITOH). ---------------------------------------- Feature #21616: date ライブラリを deprecated させたい https://bugs.ruby-lang.org/issues/21616 * Author: jinroq (Jinroq SAITOH) * Status: Open ---------------------------------------- ### 概要 *date ライブラリが長期間メンテナンスされておらず、機能を time ライブラリに委譲して deprecated させたい* というお話が出ていると風の噂で耳にしましたが、どこまでを考えられているのかご意見をお聞きしたいです。 ### 確認事項 #### `Date._parse` を time に移植したい `Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。) #### `Date.strptime` を time に移植したい [date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか? #### deprecated させた場合の影響範囲 deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか? -- https://bugs.ruby-lang.org/
Issue #21616 has been updated by nobu (Nobuyoshi Nakada). jinroq (Jinroq SAITOH) wrote:
#### `Date._parse` を time に移植したい
`Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。)
むしろ、あまりにもheuristicすぎる`Time.parse`こそが廃止したい筆頭ですね。 また、実装面で言うとCとrubyをfuncallとblockで繰り返し行き来するというのも、少なくともVM化した1.9以降では有利とは言えません。
#### `Date.strptime` を time に移植したい
[date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか?
しばらく前から考えているのが、基準になる時刻はどうせ必要なので、クラスメソッドではなくインスタンスメソッドのほうがいいのではということです。 こんな感じ。 ```ruby basetime = Time.now basetime.parse(time_string, format: ["%FT%T%Z", "%F %T %Z", "%+"]) ``` ただ、可能な`format`を全部渡すという形だと、省略を許すという記法がないと使いづらいかもという懸念はあります。
#### deprecated させた場合の影響範囲
deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか?
影響範囲などが読めないというのも、なかなか手が進まない理由にあります。 ---------------------------------------- Feature #21616: date ライブラリを deprecated させたい https://bugs.ruby-lang.org/issues/21616#change-114693 * Author: jinroq (Jinroq SAITOH) * Status: Open ---------------------------------------- ### 概要 *date ライブラリが長期間メンテナンスされておらず、機能を time ライブラリに委譲して deprecated させたい* というお話が出ていると風の噂で耳にしましたが、どこまでを考えられているのかご意見をお聞きしたいです。 ### 確認事項 #### `Date._parse` を time に移植したい `Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。) #### `Date.strptime` を time に移植したい [date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか? #### deprecated させた場合の影響範囲 deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか? -- https://bugs.ruby-lang.org/
Issue #21616 has been updated by jinroq (Jinroq SAITOH). nobu (Nobuyoshi Nakada) wrote in #note-1: 回答ありがとうございます。
jinroq (Jinroq SAITOH) wrote:
#### `Date._parse` を time に移植したい
`Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。)
むしろ、あまりにもheuristicすぎる`Time.parse`こそが廃止したい筆頭ですね。 また、実装面で言うとCとrubyをfuncallとblockで繰り返し行き来するというのも、少なくともVM化した1.9以降では有利とは言えません。
2011 年頃に書かれたコードをそのまま使っていますので時期的に 1.9.3 頃のものですね…。 (Time._parse を採用するかどうかは置いておいて)無理に C で書かずとも pure ruby で書き直した方が良かったりしますかね。
#### `Date.strptime` を time に移植したい
[date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか?
しばらく前から考えているのが、基準になる時刻はどうせ必要なので、クラスメソッドではなくインスタンスメソッドのほうがいいのではということです。 こんな感じ。
```ruby basetime = Time.now basetime.parse(time_string, format: ["%FT%T%Z", "%F %T %Z", "%+"]) ```
ただ、可能な`format`を全部渡すという形だと、省略を許すという記法がないと使いづらいかもという懸念はあります。
参考になります。ありがとうございます。
#### deprecated させた場合の影響範囲
deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか?
影響範囲などが読めないというのも、なかなか手が進まない理由にあります。
そうですよね…。 ---------------------------------------- Feature #21616: date ライブラリを deprecated させたい https://bugs.ruby-lang.org/issues/21616#change-114708 * Author: jinroq (Jinroq SAITOH) * Status: Open ---------------------------------------- ### 概要 *date ライブラリが長期間メンテナンスされておらず、機能を time ライブラリに委譲して deprecated させたい* というお話が出ていると風の噂で耳にしましたが、どこまでを考えられているのかご意見をお聞きしたいです。 ### 確認事項 #### `Date._parse` を time に移植したい `Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。) #### `Date.strptime` を time に移植したい [date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか? #### deprecated させた場合の影響範囲 deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか? -- https://bugs.ruby-lang.org/
Issue #21616 has been updated by naruse (Yui NARUSE). jinroq (Jinroq SAITOH) wrote in #note-2:
nobu (Nobuyoshi Nakada) wrote in #note-1:
回答ありがとうございます。
jinroq (Jinroq SAITOH) wrote:
#### `Date._parse` を time に移植したい
`Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。)
むしろ、あまりにもheuristicすぎる`Time.parse`こそが廃止したい筆頭ですね。 また、実装面で言うとCとrubyをfuncallとblockで繰り返し行き来するというのも、少なくともVM化した1.9以降では有利とは言えません。
2011 年頃に書かれたコードをそのまま使っていますので時期的に 1.9.3 頃のものですね…。 (Time._parse を採用するかどうかは置いておいて)無理に C で書かずとも pure ruby で書き直した方が良かったりしますかね。
実装をどうするかよりも、Time.parseがRubyに必要かという議論をするのがよいと思います。 今のままのものがそのまま欲しいかというとNoよりだと思います。 じゃあ全くいらないのかというと悩ましいところで、まずここでいう Time.parse とは何かから考える必要があって、 それはおそらく複数フォーマットに対応した日付パースメソッドでしょう。 なので、議論は 1. 複数フォーマットに対応した日付パースメソッドは欲しいか? 2. 欲しいならどのようなフォーマットに対応していてほしいか? ISO 8601, RFC822, Cookie datetime(822の区切りが-のもの)など
#### `Date.strptime` を time に移植したい
[date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか?
しばらく前から考えているのが、基準になる時刻はどうせ必要なので、クラスメソッドではなくインスタンスメソッドのほうがいいのではということです。 こんな感じ。
```ruby basetime = Time.now basetime.parse(time_string, format: ["%FT%T%Z", "%F %T %Z", "%+"]) ```
ただ、可能な`format`を全部渡すという形だと、省略を許すという記法がないと使いづらいかもという懸念はあります。
参考になります。ありがとうございます。
すべてのコンポーネントがあるならbasetimeは必要ないので、インスタンスメソッドが適切なんですかねぇ
#### deprecated させた場合の影響範囲
deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか?
影響範囲などが読めないというのも、なかなか手が進まない理由にあります。
そうですよね…。
関連チケットにつけていたリポジトリ分割など少しずつ使うコストを上げていくという手はあるかもしれませんね。 ---------------------------------------- Feature #21616: date ライブラリを deprecated させたい https://bugs.ruby-lang.org/issues/21616#change-114837 * Author: jinroq (Jinroq SAITOH) * Status: Open ---------------------------------------- ### 概要 *date ライブラリが長期間メンテナンスされておらず、機能を time ライブラリに委譲して deprecated させたい* というお話が出ていると風の噂で耳にしましたが、どこまでを考えられているのかご意見をお聞きしたいです。 ### 確認事項 #### `Date._parse` を time に移植したい `Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。) #### `Date.strptime` を time に移植したい [date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか? #### deprecated させた場合の影響範囲 deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか? -- https://bugs.ruby-lang.org/
Issue #21616 has been updated by jinroq (Jinroq SAITOH). Thanks for your advices! After careful consideration, I've concluded that the date library shouldn't be deprecated. An alternative solution would be to rewrite the date library from C to Ruby, so that any programmer who understands Ruby could maintain it. Here's an example: https://github.com/jinroq/date/tree/replace_c_to_ruby This issue is closed. ---------------------------------------- Feature #21616: date ライブラリを deprecated させたい https://bugs.ruby-lang.org/issues/21616#change-116438 * Author: jinroq (Jinroq SAITOH) * Status: Open ---------------------------------------- ### 概要 *date ライブラリが長期間メンテナンスされておらず、機能を time ライブラリに委譲して deprecated させたい* というお話が出ていると風の噂で耳にしましたが、どこまでを考えられているのかご意見をお聞きしたいです。 ### 確認事項 #### `Date._parse` を time に移植したい `Time._parse` なるものが実現できれば十分でしょうか?(それっぽく移植は[してみました](https://github.com/ruby/time/compare/master...jinroq:time:implement_parse_from_date)。) #### `Date.strptime` を time に移植したい [date_strptime.c](https://github.com/ruby/date/blob/master/ext/date/date_strptime.c) をそのまま time に移植していいものでしょうか? 「time に移植するならついでにこんな感じだと嬉しい」といった要望があったりするのでしょうか? #### deprecated させた場合の影響範囲 deprecated はかなりのインパクトであり、様々な gem やプロダクトに影響を及ぼすかと思います。 例えば「Ruby on Rails では誰に相談すべきか」など、どこまでを考慮すべきでしょうか? -- https://bugs.ruby-lang.org/
participants (3)
-
jinroq (Jinroq SAITOH) -
naruse (Yui NARUSE) -
nobu (Nobuyoshi Nakada)