|Posted by Andrei Alexandrescu||PermalinkReply|
Recently there's been an unprecedented surge of great work on Phobos. The quality of submissions is excellent and it's very heartwarming to see that our motley crew team is zeroing in on a shared vision of what exemplary D code looks like. Congratulations to all participants.
On a related topic, we could use volunteers for other aspects of Phobos that could use improvement or are simply missing. Bugzilla is clearly there, and there is one component that needs some serious work: std.gregorian. It's time to put the politics of the matter behind us and simply move forward. I suggest we copy Boost's implementation. Jeff Garland, the creator, is willing to help by responding to whatever questions we might have. Here's more info from him:
In the core library custom calendars have never really been applied -- it's usage is something that I never documented well. The primary thing it allows is the replacement of the underlying integer types. When you get down to times this actually gets used -- there's an option to allow either 64 bit integer representation or a 96 bit integer representation (see split_time_date_system) -- effectively allowing higher resolution.
Frankly, though the 98% case seems to be a 64 bit internal rep for a combined date-time time.
Anyway, this is the area of the design that I'm least comfortable with because it hasn't really hasn't been 'tested enough'. I'm going to have the opportunity later this year as I need to replace a date/time system that needs leap seconds conversions -- which is the type of thing the time system customization is there to support -- basically replacing the internal calculations without having to rewrite the entire wrapper type.
On another note, you should really have a look at the Chrono work that Howard has done -- it's also based on boost date-time and is what's going into C++0x, primarily to represent the duration types in support of the threading interfaces. It has a more flexible type promotion engine for durations than boost date-time -- on my todo list (which I never seem to really get to these days) is to upgrade the boost date-time code to use that system. And really it's about time for me to make a pass through the entire library and eliminate all the silly stuff for vc6, gcc2.95 and their ilk....
Anyway, feel free to ask more questions -- I"m sure there will be more :-)
So, if there is anyone who'd want to tackle this project, that would be awesome.