Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is to propose the work completed so far on the
Temporalbranch for initial review and merging. The changes have become quite large (as visible via the diff 😅), but I think just about most of the building blocks are just about finished and/or close to being finished.It changes the following:
Temporalbuilt-ins to varying levelsCalendar,Duration,Instant,PlainDate,PlainDateTime,PlainYearMonth, andPlainMonthDaysaw the most attention.PlainTime,TimeZone, andZonedDateTimestill need a decent amount of work.There's still a decent amount more work to be done, but I think this is close to being a good starting point.
General design decisions that were made while working on this: the parser for iso8601 is currently separate from the
LexerandParserfor JavaScript, due to some grammar incompatibility that came up with the lexer. There is also aBuiltinCalendartrait that's meant to provide anyone who wants to implement any custom calendar. There are a few internal structs that are implemented with the idea of trying to prevent passing around entireJsObjectsin favor of the native structs wherever possible. It also turned out that these structs were typically the target of the abstract operations too, so some abstract operations are implemented on the structs (I tried to leave a note in the abstract operations section when possible pointing to where the abstract operation is implemented).There's probably a lot more I could say, but I think I'm going to leave it at this. 😆 Let me know what you think!
There are a few more things that I'd like to have completed on this before merging (although it's more of a wish list rather than necessary):
Footnote: I didn't remove
Temporalfrom thetest_ignoredue to how fragmented the current progress is and the potential for false positives at this stage, but if anyone thinks it should be removed I definitely can.Edit: Marking calendar complete but it's more of a "complete as can currently be for now".