-
Notifications
You must be signed in to change notification settings - Fork 174
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
Create an Ideal Components Bag / Skeleton for DateTimeFormat #1317
Comments
@gregtatum will provide mentorship. |
I'm spreading the word about this issue looking for candidates. More details:
|
I'm interested to work on this issue. |
@gregtatum are you still open to mentor? |
If this issue is still open, I'm definitely interested to work on this. |
@ozghimire Great! How would you prefer to get started? There is a document linked above outlining the strategy which should discuss how to get things going. I would suggest starting with #1318. I will fill in more details on that issue. @pdogr I think ozghimire is taking the first step on this to move it forward, and it's hard to parallelize this initial step, but there will probably be work to help out on around the issues. You could take another DateTimeFormat issue to get onboarded. I'm sure there will be opportunities to help in the short term. #1581 would be a good bug to onboard with if you wanted to take it. |
Hello @gregtatum, are still looking for contributors? |
…FieldLength variants (#5392) #1317 This makes it such that adding or removing fractional second digits involves changing one FieldSymbol, rather than going and mutating the choice of fields in the pattern. Simpler and less error-prone at runtime. The parsing of "ss.SSS" is moved into the parser, where it belongs, rather than handling it at format time.
I'm going to delete the benches for the old code soon, but here is a snapshot of how they currently compare, running on the same data but with different APIs:
In words, peformance on The primary metrics that my work has been focused on are memory use and binary/data size, so it's nice to see that we could achieve those while also getting a small improvement on benchmark performance as well. |
Some quick binary size analysis after migrating Compilation: Binary size breakdown of
How I calculated this: I opened both binaries in IDA Pro and measured the length of the segments. What is .rodata vs .data.rel.ro: I gather that Why the numbers don't add up: the ELF contains some sections which are neither pure code nor pure data. The biggest section not included in the numbers above is used for Relocation. The reduced data is because previously the binary was including data it didn't need for formatting, such as weekday names and certain types of time zone names, and because the new pattern layout is more efficient. I'm also pleased to see the reduced code size, which is probably due to less branching overall. |
Discussion with @robertbastian (mostly obsolete given #5538):
Suggestion for 2.0 FFI:
Types removed:
Note: I want to add more field-set-specific types, but @Manishearth suggests doing this after we have better namespacing post-2.0, and I agree. |
#1317 Also promotes NeoFormatter and TypedNeoFormatter from experimental. (doesn't rename them yet)
This is a meta issue to track implementing the "ideal components bag" as laid out in the DateTimeFormat Deep Dive 2021-10-01 design document. Originally there was some discussion to have this replace the current components bag, but it is to be implemented alongside the existing components bag. A better name can be bikeshed if needed.
The following need to be completed.
The text was updated successfully, but these errors were encountered: