Skip to content
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

Replace regex lexer with minimal regex for named groups #24604

Merged
merged 1 commit into from
Apr 29, 2021

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Apr 29, 2021

This removes the regex lexer in favor of a minimal regex to gather the named groups which we can expand on to handle edge cases as we catch them. Existing integration tests should cover this change so no additional ones have been added.

Closes: #24599

Bug

  • Related issues linked using fixes #number
  • Integration tests added

Feature

  • Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
  • Related issues linked using fixes #number
  • Integration tests added
  • Documentation added
  • Telemetry added. In case of a feature if it's used or not.

Documentation / Examples

  • Make sure the linting passes

@ijjk
Copy link
Member Author

ijjk commented Apr 29, 2021

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall decrease ✓
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
buildDuration 12.1s 12.1s -78ms
buildDurationCached 4s 3.8s -254ms
nodeModulesSize 46.7 MB 46.6 MB -46.8 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
/ failed reqs 0 0
/ total time (seconds) 2.057 2.08 ⚠️ +0.02
/ avg req/sec 1215.47 1201.81 ⚠️ -13.66
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.071 1.079 ⚠️ +0.01
/error-in-render avg req/sec 2335.14 2317.32 ⚠️ -17.82
Client Bundles (main, webpack, commons)
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
597-HASH.js gzip 13.2 kB 13.2 kB
778-HASH.js gzip 7.11 kB 7.11 kB
framework-HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 151 B 151 B
webpack-HASH.js gzip 993 B 993 B
Overall change 60.7 kB 60.7 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
_app-HASH.js gzip 1.3 kB 1.3 kB
_error-HASH.js gzip 3.68 kB 3.68 kB
amp-HASH.js gzip 558 B 558 B
css-HASH.js gzip 363 B 363 B
hooks-HASH.js gzip 924 B 924 B
index-HASH.js gzip 243 B 243 B
link-HASH.js gzip 1.66 kB 1.66 kB
routerDirect..HASH.js gzip 336 B 336 B
withRouter-HASH.js gzip 334 B 334 B
99a142a5cfae..804.css gzip 125 B 125 B
Overall change 9.52 kB 9.52 kB
Client Build Manifests
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
_buildManifest.js gzip 390 B 390 B
Overall change 390 B 390 B
Rendered Page Sizes
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
index.html gzip 610 B 610 B
link.html gzip 616 B 616 B
withRouter.html gzip 605 B 605 B
Overall change 1.83 kB 1.83 kB

Serverless Mode (Decrease detected ✓)
General Overall decrease ✓
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
buildDuration 15s 14.8s -149ms
buildDurationCached 5.7s 5.7s -28ms
nodeModulesSize 46.7 MB 46.6 MB -46.8 kB
Client Bundles (main, webpack, commons)
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
597-HASH.js gzip 13.2 kB 13.2 kB
778-HASH.js gzip 7.11 kB 7.11 kB
framework-HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 151 B 151 B
webpack-HASH.js gzip 993 B 993 B
Overall change 60.7 kB 60.7 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
_app-HASH.js gzip 1.3 kB 1.3 kB
_error-HASH.js gzip 3.68 kB 3.68 kB
amp-HASH.js gzip 558 B 558 B
css-HASH.js gzip 363 B 363 B
hooks-HASH.js gzip 924 B 924 B
index-HASH.js gzip 243 B 243 B
link-HASH.js gzip 1.66 kB 1.66 kB
routerDirect..HASH.js gzip 336 B 336 B
withRouter-HASH.js gzip 334 B 334 B
99a142a5cfae..804.css gzip 125 B 125 B
Overall change 9.52 kB 9.52 kB
Client Build Manifests
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
_buildManifest.js gzip 390 B 390 B
Overall change 390 B 390 B
Serverless bundles Overall decrease ✓
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
_error.js 1.39 MB 1.35 MB -46.4 kB
404.html 2.76 kB 2.76 kB
500.html 2.75 kB 2.75 kB
amp.amp.html 10.8 kB 10.8 kB
amp.html 1.96 kB 1.96 kB
css.html 2.13 kB 2.13 kB
hooks.html 2.01 kB 2.01 kB
index.js 1.39 MB 1.35 MB -46.4 kB
link.js 1.45 MB 1.4 MB -46.4 kB
routerDirect.js 1.44 MB 1.4 MB -46.4 kB
withRouter.js 1.44 MB 1.4 MB -46.4 kB
Overall change 7.14 MB 6.91 MB -232 kB

Webpack 4 Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
buildDuration 10.4s 10.4s ⚠️ +2ms
buildDurationCached 4.3s 4.2s -89ms
nodeModulesSize 46.7 MB 46.6 MB -46.8 kB
Page Load Tests Overall increase ✓
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
/ failed reqs 0 0
/ total time (seconds) 2.048 2.025 -0.02
/ avg req/sec 1220.8 1234.57 +13.77
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.107 1.076 -0.03
/error-in-render avg req/sec 2258.72 2323.35 +64.63
Client Bundles (main, webpack, commons)
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
677f882d2ed8..HASH.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.18 kB 7.18 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
_app-HASH.js gzip 1.28 kB 1.28 kB
_error-HASH.js gzip 3.71 kB 3.71 kB
amp-HASH.js gzip 536 B 536 B
css-HASH.js gzip 339 B 339 B
hooks-HASH.js gzip 887 B 887 B
index-HASH.js gzip 227 B 227 B
link-HASH.js gzip 1.65 kB 1.65 kB
routerDirect..HASH.js gzip 303 B 303 B
withRouter-HASH.js gzip 302 B 302 B
21c68fa65a48..217.css gzip 125 B 125 B
Overall change 9.36 kB 9.36 kB
Client Build Manifests
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
_buildManifest.js gzip 419 B 419 B
Overall change 419 B 419 B
Rendered Page Sizes
vercel/next.js canary ijjk/next.js update/replace-regex-lexer Change
index.html gzip 613 B 613 B
link.html gzip 621 B 621 B
withRouter.html gzip 606 B 606 B
Overall change 1.84 kB 1.84 kB
Commit: b5448cd

@ijjk ijjk marked this pull request as ready for review April 29, 2021 15:51
@ijjk ijjk merged commit 1e441fe into vercel:canary Apr 29, 2021
@ijjk ijjk deleted the update/replace-regex-lexer branch April 29, 2021 17:50
flybayer pushed a commit to blitz-js/next.js that referenced this pull request Jun 1, 2021
@vercel vercel locked as resolved and limited conversation to collaborators Jan 28, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Remove/Limit use of regexr and regexer-lexer, which introduce GPL-3.0 license into NextJS
3 participants