js-temporal / temporal-polyfill

Polyfill for Temporal (under construction)
ISC License
528 stars 28 forks source link

Port more commits from proposal-temporal 2023-04-22 #246

Closed justingrant closed 1 year ago

justingrant commented 1 year ago

Here's another batch of 35 upstream commits! Note that these commits are rebased on upstream's porting branch. This branch was produced by running commits through a script that converted ecmascript.mjs to exported functions and limited commits to only files that the prod polyfill needed. This made porting much, much faster and easier because ecmascript.mjs changes now show up as merge conflicts. After upstream catches up to https://github.com/tc39/proposal-temporal/pull/2557, then this branch will no longer be needed.

I ended up reverting the perf and bundle size optimizations we'd been using previously (e.g. calendar.day(date) instead of GetMethod followed by Call. This will make it easier to port later commits. We can add back these optimizations once the number of upstream commits (and hence the porting workload) slows down.

This PR stops right before @ptomato's gargantuan PRs like the string slots change. The next porting PR will include those changes.

There's only ~30 expected failures remaining (before we advance Test262 to the latest in preparation for the next batch of ports, which will add 600+ new expected failures). Some of these failures might represent mistakes in porting commit merges (instead of tests that I haven't caught up with in porting commits). From almost all of them look like tests of code that will be changed radically or removed in later upstream commits. And none of them looked like critical code paths; they're problems like RangeError vs. TypeError and order of operations. So unless anyone objects, instead of diagnosing why each one is still failing, I'm planning going to leave those expected failures as-is for now, and then if any still remain after the next batch is ported (hopefully next week), then we can figure out what went wrong.