[#35446] [Ruby 1.9 - Bug #4477][Open] Kernel:exec and backtick (`) don't work for certain system commands — Joachim Wuttke <j.wuttke@...>

10 messages 2011/03/07

[#35476] [Ruby 1.9 - Bug #4489][Open] [PATCH] Encodings with /-(unix|dos|mac)\Z/ — "James M. Lawrence" <quixoticsycophant@...>

20 messages 2011/03/10

[#35552] [Ruby 1.9 - Feature #4523][Open] Kernel#require to return the path of the loaded file — Alex Young <alex@...>

14 messages 2011/03/24

[#35565] [Ruby 1.9 - Feature #4531][Open] [PATCH 0/7] use poll() instead of select() in certain cases — Eric Wong <normalperson@...>

33 messages 2011/03/28

[#35566] [Ruby 1.9 - Feature #4532][Open] [PATCH] add IO#pread and IO#pwrite methods — Eric Wong <normalperson@...>

12 messages 2011/03/28

[#35586] [Ruby 1.9 - Feature #4538][Open] [PATCH (cleanup)] avoid unnecessary select() calls before doing I/O — Eric Wong <normalperson@...>

9 messages 2011/03/29

[ruby-core:35415] [Ruby 1.9 - Feature #4068] [Rejected] Replace current standard Date/DateTime library with home_run

From: tadayoshi funaba <redmine@...>
Date: 2011-03-02 12:02:04 UTC
List: ruby-core #35415
Issue #4068 has been updated by tadayoshi funaba.

Status changed from Assigned to Rejected


----------------------------------------
Feature #4068: Replace current standard Date/DateTime library with home_run
http://redmine.ruby-lang.org/issues/4068

Author: Jeremy Evans
Status: Rejected
Priority: Low
Assignee: tadayoshi funaba
Category: 
Target version: 


 The current standard date library is slow enough to be the bottleneck in many programs.  I have written a replacement for it in C (named home_run) that is much faster while attempting to be mostly compatible.  I open this ticket in the hope that home_run can replace the current standard date library in a future version of ruby.
 
 First, the code is at: https://github.com/jeremyevans/home_run
 
 As it states in the README, here are the known differences from the current standard library:
 
 * Written in C (mostly) instead of ruby. Stores information in a C structure, and therefore has a range limitation. home_run cannot handle dates after 5874773-08-15 or before -5877752-05-08 on 32-bit platforms (with larger limits for 64-bit platforms).
 * The Date class does not store fractional days (e.g. hours, minutes), or offsets. The DateTime class does handle fractional days and offsets.
 * The DateTime class stores fractional days as the number of nanoseconds since midnight, so it cannot deal with differences less than a nanosecond.
 * Neither Date nor DateTime uses rational. Places where the standard library returns rationals, home_run returns integers or floats.
 * Because rational is not used, it is not required. This can break other libraries that use rational without directly requiring it.
 * There is no support for modifying the date of calendar reform, the sg arguments are ignored and the Gregorian calendar is always used. This means that julian day 0 is -4173-11-24, instead of -4712-01-01.
 * The undocumented Date#strftime format modifiers are not supported.
 * The DateTime offset is checked for reasonableness. home_run does not support offsets with an absolute difference of more than 14 hours from UTC.
 * DateTime offsets are stored in minutes, so it will round offsets with fractional minutes to the nearest minute.
 * All public class and instance methods for both Date and DateTime are implemented, except that the allocate class method is not available and on 1.9, _dump and _load are used instead of marshal_dump and marshal_load.
 * Only the public API is compatible, the private methods in the standard library are not implemented.
 * The marshalling format differs from the one used by the standard library. Note that the 1.8 and 1.9 standard library date marshalling formats differ from each other.
 * Date#step treats the step value as an integer, so it cannot handle steps of fractional days. DateTime#step can handle fractional day steps, though.
 * When parsing the %Q modifier in _strptime, the hash returned includes an Integer :seconds value and a Float :sec_fraction value instead of a single rational :seconds value.
 * The string returned by #inspect has a different format, since it doesn't use rational.
 * The conversion of 2-digit years to 4-digit years in Date._parse is set to true by default. On ruby 1.8, the standard library has it set to false by default.
 * You can use the Date::Format::STYLE hash to change how to parse DD/DD/DD and DD.DD.DD date formats, allowing you to get ruby 1.9 behavior on 1.8 or vice-versa. This is probably the only new feature in that isn't in the standard library.
 
 From previous discussions on ruby-core, the following things will probably need to be changed before home_run could replace the current standard date library:
 
 * The marshalling format needs to be made compatible with the current standard library.
 * The specs needs to be converted from MSpec to minitest/spec for inclusion in ruby.
 * The RubySpec project also needs to have the MSpecs added, with the appropriate version guards where behavior has changed.
 * Where home_run now returns floats, it should return rationals instead.
 
 I'm willing to make these changes and other reasonable changes in order to get this included in ruby.  I just need to know what all of the required changes are.


-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next