tfpt review “/shelveset:Time7;REDMOND\tomat”
Comment :
Adds NoUnderlyingType to ModuleRestrictions.
- If set, the members of the underlying CLR type are not accessible
from Ruby (not even via clr_new, etc.) - A Ruby library class/module can either extend an existing CLR type
or be self-contained. A self-contained class/module has
ModuleRestriction.NoUnderlyingType set by default.
Separates Ruby method implementations on RubyTime to a separate class
so that we can expose RubyTime underlying CLR type.
Fixes bugs and Time related specs:
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2912
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2217
Time zones
It seems that MRI is using CRT zone API (_tzset) on Windows. That API
(http://msdn.microsoft.com/en-us/library/90s5c885(VS.80).aspx) is buggy
and also different from Unix API based on TZ environment variable. The
only thing _tzset does is that it parses TZ environment variable value
using format < zone offset hh:mm:ss> and stores the
parsed values into global variables. It doesn’t look up time zone name
in any database (registry) or even allow to specify DST offset and rule
(unlike POSIX TZ variable). As a consequence MRI on Windows doesn’t
correctly implement daylight saving related API (Time#dst?). If the
offset is not specified in TZ variable we don’t know anything about the
zone and thus no zone related methods work correctly. And indeed the
specs are failing. Besides, MRI doesn’t update the current time zone if
TZ environment variable is changed at runtime (it only parses it once
when the process is initialized) -
http://redmine.ruby-lang.org/issues/show/1972.
This change makes IronRuby recognize TZ environment variable and
update the current time zone whenever ENV[“TZ”] is assigned to. Current
limitations:
- TZ variable needs to define zone offset. We don’t do time zone
name lookup and so only time zone name or abbreviation is not
sufficient. If the offset is not specified we use the default time zone
provided by OS and report a warning. - Time#dst? always uses the default OS zone, not the one that is
specified by TZ variable. A warning is reported if the current zone
comes from TZ variable.
Fixes Time specs that were relying on Unix specific commands.
Fixes time related bugs in YAML and a bug in the YAML scanner:
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=2044
Enables subclassing socket classes, fixes:
http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3196
There is a also bug in tzinfo gem:
C:\M0\Merlin\External.LCA_RESTRICTED\Languages\Ruby\ruby-1.8.6p368\lib\ruby\gems\1.8\gems\tzinfo-0.3.15\lib\tzinfo\time_or_datetime.rb
Line #43 is missing usec parameter:
@time = Time.utc(@time.year, @time.mon, @time.mday, @time.hour,
@time.min, @time.sec, @time.usec) unless @time.zone == ‘UTC’
Tomas