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
.hrefis only 33% slower in url parse benchmark, and it could be made lazy again since nobody deletes.hrefanyway.