-
Notifications
You must be signed in to change notification settings - Fork 30k
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
url: improve url module performance #1650
Conversation
This is still semver-major, correct? |
no there should not be breaking changes |
Let's CI this, also npm tests should pass. |
|
I'd be fine landing this in a patch release. @petkaantonov can you outline what's changed from the original implementation? |
The parsing has been rewritten ( Some minor changes in formatting ( Some micro optimization in resolution ( |
Needs a rebase because of 19ffb5c |
4c976d0
to
dd0053a
Compare
rebased |
Thanks, got a few linter errors concerning this rule: http://eslint.org/docs/rules/comma-spacing lib/url.js
31:22 error There should be no space before ',' comma-spacing
32:22 error There should be no space before ',' comma-spacing
33:14 error There should be no space before ',' comma-spacing
33:28 error There should be no space before ',' comma-spacing
228:48 error There should be no space before ',' comma-spacing
636:40 error There should be no space before ',' comma-spacing
941:48 error There should be no space before ',' comma-spacing
950:46 error There should be no space before ',' comma-spacing |
Those are not spaces but comments like |
Yeah, it's kind of bullshit that this gets interpreted as a space. |
should we open issue in eslint? |
Already been done: eslint/eslint#2408 |
Probably best to disable the |
How about this ?? const _protocolCharacters = makeAsciiTable([
[0x61, 0x7A], /*a-z*/
[0x41, 0x5A], /*A-Z*/
0x2E, /*'.'*/ 0x2B, /*'+'*/ 0x2D /*'-'*/
]); |
@yosuke-furukawa that's just confusing. also doesn't work in cases like if (!containsCharacter2(search, 0x23 /*'#'*/, -1)) |
Hm... I think this is not so weird. if (!containsCharacter2(search, 0x23, /*'#'*/ -1)) But +1 for suppress the warnings if you want. |
@yosuke-furukawa would you suggest setting the setting to |
1 is warn, 0 is silence. 1 is better. When we will re-consider the eslint rules, we can detect the rule violation easily. |
@petkaantonov the PR should pass eslint now. I'd advice changing lines like 0x2E /*'.'*/, 0x2B /*'+'*/, 0x2D /*'-'*/ to 0x2E/*'.'*/, 0x2B/*'+'*/, 0x2D/*'-'*/ because I assume eslint will still warn on these after the fix. |
done |
@petkaantonov thanks. May I ask to add a small test for the |
One additional bit to note, the IANA registry for URI schemes lists a few more permanent schemes that require the slash (coap, for instance, http://tools.ietf.org/html/rfc7252) that are currently not listed in the |
@petkaantonov thank you for persisting with this btw. The improvements look very good on an initial review |
It'll be great to see this finally land. Great work @petkaantonov |
Hey everybody - what's the status, what's keeping us from merging this? :) |
There are still a few outstanding comments, including the request to port the tests from the previous PR. Plus, it needs to be rebased, since it no longer merges cleanly. |
I am really lacking the time at the moment |
reference to original: #1561 |
No worries @petkaantonov |
Out of interest, is this still going places? |
@ronkorving it nowadays live in #2303. |
Ah thanks, better close this one then I guess? |
I think its left open in case petka has time to resume. |
7da4fd4
to
c7066fb
Compare
Going to cloes this, Petka said he's likely not going to resume, the changes live in another PR and this can be reopend anyway if anyone disagrees. |
There is no compatibility breakage and using eager
.href
is only 33% slower in url parse benchmark, and it could be made lazy again since nobody deletes.href
anyway.