Re: DateTime::Lite

[email protected] (Daisuke Maki)
Newsgroups perl.datetime
Message-ID <[email protected]>
oops, forgot the SVN url

http://svn.coderepos.org/share/lang/perl/DateTime-Lite/trunk

--d

Daisuke Maki wrote:
> Hi,
> 
> I have an RFC/request for blessing for a module.
> 
> So I have this requirement to make DateTime leaner, in terms of speed,
> load time, and the amount of memory consumed. The target is for casual
> users, so the use of XS code is not an option either.
> 
> I've done my share of hacking DateTime before, and I believe that
> changing the DateTime.pm code base itself is not really an option since
> DateTime needs to be backward compatible and what not.
> 
> Instead I took the approach of using DateTime.pm as a reference
> implementation, and rearranged the code somewhat to get the desired effect.
> 
> Now I have something that passes all current DateTime tests and named it
> DateTime::Lite. I intend to do some more hacking soon ish, but thought
> I'd ask for your comments before hand.
> 
> I've pasted the current POD for DateTime::Lite at the end of this email.
> Also, if you are interested, the code is at
> 
> note that the location of time zones and locales are hard coded now, so
> DateTime::Lite will only work from the checked out root.
> 
> regards,
> 
> --d
> 
> =head1 NAMEDateTime::Lite - A Low Calorie DateTime
> 
> =head1 SYNOPSIS
> 
>     use DateTime::Lite;
> 
>     my $dt = DateTime::Lite->new(year => 2008, month => 12, day => 1);
>     $dt->year;
>     $dt->month;
>     $dt->day;
>     $dt->hour;
>     $dt->minuute;
>     $dt->second;
> 
>     # Arithmetic doesn't come with DateTime::Lite by default
>     use DateTime::Lite qw(Arithmetic);
>     $dt->add( DateTime::Lite::Duration->new(days => 5) );
> 
> =head1 DESCRIPTION
> 
> This is a complete rip-off of the great DateTime module. The author
> simply copy
> and pasted about 90% of the code, tweaked it and repackaged it. All
> credits go t
> o the original DateTime.pm's authors.However, this module was conceived
> out of a few specific desires :
> 
>   (1) Target those who do not need the full feature of DateTime.pm
>   (2) Get better performance:
>       * Reduce the amount of memory consumed, and      * Reduce the time
> it takes to load the module  (3) Make it easy to install on rental servers
>   (4) Bundle everything in one distribution, including timezones and locales
> 
> To achieve this, we've taken the original DateTime and rearranged it as
> follows:
> 
> =over 4
> 
> =item DateTime::Lite is Pure Perl
> 
> No XS, pronto. Since we expect the audience to be people who are not
> sysadmins, we don't expect them to have a full compiler support
> either.=item Parameter validation is done by hand
> =item Parameter validation is done by hand
> 
> Params::Validate is a great module, but it slows things down. We don't
> see the merit of removing it from the original DateTime.pm, but we did
> so in this version.
> 
> =item Non-essential methods are loaded on demand
> 
> A lot of times you don't even need to do date time arithmetic, for
> example. These methods are separated out onto a different file, so you
> need to load it on demand.
> 
>     use DateTime::Lite qw(Arithmetic);
>     use DateTime::Lite qw(Strftime);
> 
> =item DateTime::Lite::TimeZone and DateTime::Lite::Locale
> 
> DateTime::Lite::TimeZone and DateTime::Lite::Locale have big changes
> from their original counterparts.
> 
> First, you do NOT call new() on these objects (unless this is something
> you explicitly want to do). Instead, you need to call load(). So if you
> were mucking with DateTime::Lite::TimeZone and DateTime::Locale, you
> need to find out every occurance of
> 
>     DateTime::Lite::TimeZone->load( name => 'Asia/Tokyo' );
> 
> and change them to
> 
>     DateTime::Lite::TimeZone->load( name => 'Asia/Tokyo' );
> 
> Singletons are okay, they serve a particular purpose. But besides being
> a memory hog of relative low benefit, when given the number of time
> zones are locales, they are just way too overwhelming for underlings.
> 
> With this version, the objects are mostly the just plain objects, and
> the exact definition for each timezone/locale is stored in data files. #
> TODO: They can be located anywhere DateTime::Lite can find them
> 
> TODO: We want to make it easy to pick and choose which locales/timezones
> to be available -- DateTime::TimeZone and Locale comes with the
> full-set, and normally we don't need this feature. For example, I only
> use Asia/Tokyo and UTC time zones for my dayjob. When we ask casual
> users to install a datetime package, we do not want to overwhelm then
> with 100+ timezones and locales.
> 
> =cut
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.