-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
excise most of Dates from Base #23302
Comments
I'm not really convinced of this plan. Dates seem pretty basic. I would suggest that Dates are the most used type in base after Int, Float64 and String. Many of the issues are for constructor or constructor like methods. Will we have the types in base, but not the constructors? That seems like a deep dependency that will negate any benefit of separation. I'm not sure what basic arithmetic is, as opposed to non basic. We basically do addition and subtraction. Do mean removing other time instances? Some of the shorter time instances will be required to get arithmetic with So I'm not clear how this will work. |
I disagree with the statement "a lot of functionality which is still very much a work in progress". Dates have been in for what, 3 years now? Most of those issues are easy closes (I can plan on triaging/closing over the next week) and not major design issues. I do agree that Dates would make excellent |
I think it would make more sense to move the whole thing. It has been in Base for a while and remains mostly decoupled. Base functions like |
A lot of the linked dates-related issues have a feel of not just being bug fixes or minor feature additions. Several of them have a feeling of needing some significant API redesign. For example, having a lot of method ambiguities is usually a sign of a fundamental problem. Concerns about the type hierarchy. Constructor versus I'm not saying that there's anything wrong with Dates or that it's not important – in fact I want it out of Base (or declared unstable) because it's important and I don't want it becoming ossified before it's really ready. Dates has been a great success, but I just have a gut feeling that we will want to change things that the 1.0 stability promise will prevent us from changing. And that would really be a shame. |
I agree with this. In particular, I'm concerned that any attempt to change the representation might be quite breaking. I do think something like the day-segmented time of JuliaLang/Juleps#36 is the right way to go, but that seems to have stalled for now. My feeling is that |
my view on this redo it with lessons learned and issue avoidance and interworkability of multiple representations we are efforting hope that-a-way here there will a few thing that Base should have for transparency -- idk exactly what they are as yet if we have a basic tic-toc clock that serves as a calendar_date_and_time_of_day type that is equi-available as a 64bit wrapper and as a 128bit wrapper (y'all know better than I .. struct baseclock{param_for_size or resolution} .. or a generated? struct or what occurs to you) then the rest can be had theWithout that, things will stay stay messy because ther are equi-important conflicting needs (physics experiments, legal requirements, &etc). |
A relevant case-study is Arrow, which is a better version of dates for Python that is free to evolve independently of Python's slow release cycle. |
Could we imagine moving |
That's not a bad idea actually – there's no reason that |
Yeah, that seems fine; again, I think it should just all go together into it's own Which, BTW, anyone working on that? Isn't that a pretty desirable 1.0 feature? I know there's been a few PRs here & there, but we probably need a more concentrated effort there to really get something that works. |
I'm headed to Boston next week and the plan is to do a bunch of work on code loading, part of which is standard library packages. So that will be started soon. |
Plan: move Dates to a standard package, including |
"and any other .. dates or datetime objects" --> "and any other .. [reworked] dates or datetime objects" |
I'd be happy to have Dates move out of Base. One big change I'd like to do is try to move away from assuming that |
+1 |
Standard packages may actually be subtrees of the main Julia repo. |
What's the decision here? Move to stdlib? |
I’d say definitely |
Okay, so not into its own external package then (outside the Julia repo?) |
Yes, let's move it to stdlib. That will be the default choice for modules that used to be in Base. From there it's much easier to move things to external repos later if we want (since |
Especially since |
The
Dates
submodule is quite large and has a lot of functionality which is still very much a work in progress. To that end, it should be split into just the bare minimum functionality that needs to be in Base, which IMO is:If you want to do anything more complex with dates or times, you'll have to load a (standard) package. The only reason to have dates and times in Base at all is so that functions like
now()
can produce datetime values.Would close (move out of this repo) the following issues:
https://github.com/JuliaLang/julia/issues?q=is%3Aopen+is%3Aissue+label%3Adates
Most of these should technically be a 1.0 blocker. The only viable alternative I can see is to keep
Dates
in Base but declare it to be unstable despite the 1.0 release and continue to evolve it.The text was updated successfully, but these errors were encountered: