Skip to content

fix: oxc-parser to yuku-parser#922

Closed
avivkeller wants to merge 3 commits into
mainfrom
yuku
Closed

fix: oxc-parser to yuku-parser#922
avivkeller wants to merge 3 commits into
mainfrom
yuku

Conversation

@avivkeller

Copy link
Copy Markdown
Member

Swaps our usage of OXC with a WASM alternative

@avivkeller
avivkeller requested a review from a team as a code owner July 19, 2026 19:20
@vercel

vercel Bot commented Jul 19, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
api-docs-tooling Ready Ready Preview Jul 19, 2026 7:23pm

Request Review

@cursor

cursor Bot commented Jul 19, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Parser and AST visitor changes in type-annotation linking could alter behavior for edge-case TypeScript types if yuku’s output differs from OXC.

Overview
Replaces oxc-parser (and its native optional bindings) with @yuku-parser/wasm and yuku-ast for TypeScript parsing in metadata type resolution.

In resolveTypes.mjs, batch alias parsing now uses parse(source, { lang: 'ts' }), treats diagnostics instead of errors, and walks the AST with walk instead of OXC’s Visitor. TSNullKeyword is handled via the shared keyword list; the old TSLiteralType / NullLiteral visitor path is removed.

Package version bumps to 1.4.3 with a patch changeset noting the dependency swap.

Reviewed by Cursor Bugbot for commit 8a72ac5. Bugbot is set up for automated code reviews on this repo. Configure here.

@codecov

codecov Bot commented Jul 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 83.33333% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 84.92%. Comparing base (ada6540) to head (8a72ac5).

Files with missing lines Patch % Lines
src/generators/metadata/utils/resolveTypes.mjs 83.33% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #922      +/-   ##
==========================================
- Coverage   84.92%   84.92%   -0.01%     
==========================================
  Files         192      192              
  Lines       17506    17502       -4     
  Branches     1551     1551              
==========================================
- Hits        14867    14863       -4     
  Misses       2633     2633              
  Partials        6        6              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

Copy link
Copy Markdown
Contributor

api-links Generator

Performance

Metric Base Head Diff
Elapsed time 1.39 s 1.37 s -20.00 ms (-1.44%)
User CPU time 2.99 s 2.85 s -140.00 ms (-4.68%)
System CPU time 340.00 ms 340.00 ms 0.00 ms (0.00%)
Peak resident memory 350.08 MB 349.32 MB -772.00 KB (-0.22%)

legacy-html Generator

Output size

| File | Base | Head | Diff |

|-|-|-|-|

| fs.html | 1.06 MB | 1.06 MB | +5.08 KB (+0.47%) |
| sqlite.html | 231.71 KB | 233.63 KB | +1.93 KB (+0.83%) |
| quic.html | 424.09 KB | 425.51 KB | +1.42 KB (+0.34%) |
| stream.html | 854.55 KB | 855.26 KB | +728.00 B (+0.08%) |
| child_process.html | 443.89 KB | 444.50 KB | +624.00 B (+0.14%) |
| module.html | 344.89 KB | 345.50 KB | +624.00 B (+0.18%) |
| crypto.html | 1.09 MB | 1.09 MB | +416.00 B (+0.04%) |
| net.html | 251.83 KB | 252.24 KB | +416.00 B (+0.16%) |
| process.html | 702.32 KB | 702.73 KB | +416.00 B (+0.06%) |
| worker_threads.html | 402.11 KB | 402.51 KB | +416.00 B (+0.10%) |
| ffi.html | 91.43 KB | 91.73 KB | +312.00 B (+0.33%) |
| tls.html | 278.37 KB | 278.68 KB | +312.00 B (+0.11%) |
| modules.html | 157.71 KB | 157.92 KB | +208.00 B (+0.13%) |
| stream_iter.html | 464.96 KB | 465.16 KB | +208.00 B (+0.04%) |
| test.html | 928.08 KB | 928.28 KB | +208.00 B (+0.02%) |
| url.html | 331.77 KB | 331.98 KB | +208.00 B (+0.06%) |
| webcrypto.html | 360.80 KB | 361.00 KB | +208.00 B (+0.06%) |
| http.html | 639.60 KB | 639.70 KB | +104.00 B (+0.02%) |
| http2.html | 770.96 KB | 771.06 KB | +104.00 B (+0.01%) |
| util.html | 742.60 KB | 742.70 KB | +104.00 B (+0.01%) |

Performance

Metric Base Head Diff
Elapsed time 19.14 s 19.78 s +640.00 ms (+3.34%)
User CPU time 64.30 s 63.02 s -1.28 s (-1.99%)
System CPU time 2.47 s 2.47 s 0.00 ms (0.00%)
Peak resident memory 2.20 GB 2.28 GB +81.90 MB (+3.64%)

legacy-json Generator

Output

module.json
Expected values to be strictly deep-equal:
+ actual - expected
... Skipped lines

  {
    modules: [
      {
        displayName: 'Modules: `node:module` API',
        introduced_in: 'v12.20.0',
...
                      '<ul>\n' +
+                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> A hint to the <code>load</code> hook (it might be ignored). It can be a\n' +
-                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> A hint to the <code>load</code> hook (it might be ignored). It can be a\n' +
                      "module format (such as <code>'commonjs'</code> or <code>'module'</code>) or an arbitrary value like <code>'css'</code> or\n" +
                      "<code>'yaml'</code>.</li>\n" +
                      '<li><code>importAttributes</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type-link">Object</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> The import attributes to use when\n' +
                      'caching the module (optional; if excluded the input will be used)</li>\n' +
                      '<li><code>shortCircuit</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#boolean_type" class="type-link">boolean</a></code> A signal that this hook intends to\n' +
...
                      '<li><code>conditions</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>[]</code> Export conditions of the relevant <code>package.json</code></li>\n' +
+                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> The format optionally supplied by the\n' +
-                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> The format optionally supplied by the\n' +
                      '<code>resolve</code> hook chain. This can be any string value as an input; input values do not need to\n' +
                      'conform to the list of acceptable return values described below.</li>\n' +
                      '<li><code>importAttributes</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type-link">Object</a></code></li>\n' +
                      '</ul>\n' +
                      '</li>\n' +
...
                          '<td>Load a Node.js CommonJS module with TypeScript syntax</td>\n' +
+                         '<td><code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer" class="type-link">ArrayBuffer</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray" class="type-link">TypedArray</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code></td>\n' +
-                         '<td><code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer" class="type-link">ArrayBuffer</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray" class="type-link">TypedArray</a>|null|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code></td>\n' +
                          '</tr>\n' +
                          '<tr>\n' +
                          "<td><code>'commonjs'</code></td>\n" +
                          '<td>Load a Node.js CommonJS module</td>\n' +
+                         '<td><code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer" class="type-link">ArrayBuffer</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray" class="type-link">TypedArray</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code></td>\n' +
-                         '<td><code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer" class="type-link">ArrayBuffer</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray" class="type-link">TypedArray</a>|null|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code></td>\n' +
                          '</tr>\n' +
                          '<tr>\n' +
                          "<td><code>'json'</code></td>\n" +
                          '<td>Load a JSON file</td>\n' +
                          '<td><code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer" class="type-link">ArrayBuffer</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray" class="type-link">TypedArray</a></code></td>\n' +
...
                      '<ul>\n' +
+                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> A hint to the <code>load</code> hook (it might be ignored). It can be a\n' +
-                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> A hint to the <code>load</code> hook (it might be ignored). It can be a\n' +
                      "module format (such as <code>'commonjs'</code> or <code>'module'</code>) or an arbitrary value like <code>'css'</code> or\n" +
                      "<code>'yaml'</code>.</li>\n" +
                      '<li><code>importAttributes</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type-link">Object</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> The import attributes to use when\n' +
                      'caching the module (optional; if excluded the input will be used)</li>\n' +
                      '<li><code>shortCircuit</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#boolean_type" class="type-link">boolean</a></code> A signal that this hook intends to\n' +
...
                      '<li><code>conditions</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>[]</code> Export conditions of the relevant <code>package.json</code></li>\n' +
+                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> The format optionally supplied by the\n' +
-                     '<li><code>format</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#undefined_type" class="type-link">undefined</a></code> The format optionally supplied by the\n' +
                      '<code>resolve</code> hook chain. This can be any string value as an input; input values do not need to\n' +
                      'conform to the list of acceptable return values described below.</li>\n' +
                      '<li><code>importAttributes</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type-link">Object</a></code></li>\n' +
                      '</ul>\n' +
                      '</li>\n' +
quic.json
Expected values to be strictly deep-equal:
+ actual - expected
... Skipped lines

  {
    modules: [
      {
        classes: [
          {
...
                  '<li><code>newRemoteAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a></code> The remote address of the validated path.</li>\n' +
+                 '<li><code>oldLocalAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a> | <a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code> The local address of the previous\n' +
-                 '<li><code>oldLocalAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a> | null</code> The local address of the previous\n' +
                  'path, or <code>null</code> if this is the first path validation (e.g., preferred address\n' +
                  "migration from the client's perspective).</li>\n" +
+                 '<li><code>oldRemoteAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a> | <a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code> The remote address of the previous\n' +
-                 '<li><code>oldRemoteAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a> | null</code> The remote address of the previous\n' +
                  'path, or <code>null</code>.</li>\n' +
                  '<li><code>preferredAddress</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#boolean_type" class="type-link">boolean</a></code> <code>true</code> if the path validation was triggered by\n' +
                  'a preferred address migration on the client side. <code>undefined</code> on the server side.</li>\n' +
                  '</ul>',
                displayName: 'Callback: `OnPathValidationCallback`',
...
                  '<li><code>newRemoteAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a></code></li>\n' +
+                 '<li><code>oldLocalAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code></li>\n' +
+                 '<li><code>oldRemoteAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code></li>\n' +
-                 '<li><code>oldLocalAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a>|null</code></li>\n' +
-                 '<li><code>oldRemoteAddress</code> <code class="type"><a href="net.html#class-netsocketaddress" class="type-link">net.SocketAddress</a>|null</code></li>\n' +
                  '<li><code>preferredAddress</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#boolean_type" class="type-link">boolean</a></code></li>\n' +
                  '<li><code>session</code> <code class="type"><a href="quic.html#class-quicquicsession" class="type-link">quic.QuicSession</a></code></li>\n' +
                  '</ul>\n' +
                  '<p>Published when a path validation attempt completes.</p>',
                displayName: 'Channel: `quic.session.path.validation`',
sqlite.json
Expected values to be strictly deep-equal:
+ actual - expected
... Skipped lines

  {
    modules: [
      {
        classes: [
          {
...
                  '<code>SQLITE_INSERT</code>, <code>SQLITE_UPDATE</code>, <code>SQLITE_SELECT</code>).</li>\n' +
+                 '<li><code>arg1</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code> The first argument (context-dependent, often a table name).</li>\n' +
+                 '<li><code>arg2</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code> The second argument (context-dependent, often a column name).</li>\n' +
+                 '<li><code>dbName</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code> The name of the database.</li>\n' +
+                 '<li><code>triggerOrView</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|<a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#null_type" class="type-link">null</a></code> The name of the trigger or view causing the access.</li>\n' +
-                 '<li><code>arg1</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null</code> The first argument (context-dependent, often a table name).</li>\n' +
-                 '<li><code>arg2</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null</code> The second argument (context-dependent, often a column name).</li>\n' +
-                 '<li><code>dbName</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null</code> The name of the database.</li>\n' +
-                 '<li><code>triggerOrView</code> <code class="type"><a href="https://developer.mozilla.org/docs/Web/JavaScript/Data_structures#string_type" class="type-link">string</a>|null</code> The name of the trigger or view causing the access.</li>\n' +
                  '</ul>\n' +
                  '<p>The callback must return one of the following constants:</p>\n' +
                  '<ul>\n' +
                  '<li><code>SQLITE_OK</code> - Allow the operation.</li>\n' +
                  '<li><code>SQLITE_DENY</code> - Deny the operation (causes an error).</li>\n' +

Performance

Metric Base Head Diff
Elapsed time 8.89 s 8.91 s +20.00 ms (+0.22%)
User CPU time 27.88 s 27.72 s -160.00 ms (-0.57%)
System CPU time 1.89 s 1.98 s +90.00 ms (+4.76%)
Peak resident memory 1.66 GB 1.64 GB -23.14 MB (-1.36%)

llms-txt Generator

Performance

Metric Base Head Diff
Elapsed time 8.68 s 9.25 s +570.00 ms (+6.57%)
User CPU time 25.32 s 25.12 s -200.00 ms (-0.79%)
System CPU time 1.90 s 2.04 s +140.00 ms (+7.37%)
Peak resident memory 1.64 GB 1.61 GB -26.62 MB (-1.59%)

orama-db Generator

Performance

Metric Base Head Diff
Elapsed time 5.96 s 9.09 s +3.13 s (+52.52%)
User CPU time 15.76 s 26.23 s +10.47 s (+66.43%)
System CPU time 1.19 s 1.78 s +590.00 ms (+49.58%)
Peak resident memory 1.79 GB 1.60 GB -193.20 MB (-10.54%)

web Generator

Output size

| File | Base | Head | Diff |

|-|-|-|-|

| all.js | 22.03 MB | 22.05 MB | +23.63 KB (+0.10%) |
| all.html | 21.28 MB | 21.30 MB | +18.99 KB (+0.09%) |
| fs.js | 1.51 MB | 1.52 MB | +8.35 KB (+0.54%) |
| fs.html | 1.66 MB | 1.66 MB | +6.74 KB (+0.40%) |
| sqlite.js | 284.31 KB | 287.48 KB | +3.17 KB (+1.12%) |
| sqlite.html | 311.82 KB | 314.38 KB | +2.56 KB (+0.82%) |
| quic.js | 554.71 KB | 557.09 KB | +2.38 KB (+0.43%) |
| quic.html | 826.71 KB | 828.63 KB | +1.92 KB (+0.23%) |
| stream.js | 930.69 KB | 932.00 KB | +1.31 KB (+0.14%) |
| module.js | 358.97 KB | 360.25 KB | +1.28 KB (+0.36%) |
| child_process.js | 487.20 KB | 488.34 KB | +1.14 KB (+0.23%) |
| stream.html | 922.95 KB | 923.99 KB | +1.04 KB (+0.11%) |
| module.html | 349.31 KB | 350.31 KB | +1.01 KB (+0.29%) |
| child_process.html | 404.87 KB | 405.77 KB | +930.00 B (+0.22%) |
| process.js | 731.84 KB | 732.60 KB | +780.00 B (+0.10%) |
| crypto.js | 1.36 MB | 1.36 MB | +732.00 B (+0.05%) |
| net.js | 347.84 KB | 348.50 KB | +684.00 B (+0.19%) |
| worker_threads.js | 420.27 KB | 420.93 KB | +684.00 B (+0.16%) |
| process.html | 718.89 KB | 719.49 KB | +620.00 B (+0.08%) |
| crypto.html | 1.20 MB | 1.21 MB | +586.00 B (+0.05%) |
| net.html | 456.06 KB | 456.60 KB | +552.00 B (+0.12%) |
| worker_threads.html | 393.99 KB | 394.53 KB | +552.00 B (+0.14%) |
| ffi.js | 108.40 KB | 108.90 KB | +513.00 B (+0.46%) |
| tls.js | 353.89 KB | 354.39 KB | +513.00 B (+0.14%) |
| ffi.html | 143.95 KB | 144.35 KB | +414.00 B (+0.28%) |
| tls.html | 413.89 KB | 414.29 KB | +414.00 B (+0.10%) |
| modules.js | 151.47 KB | 151.80 KB | +342.00 B (+0.22%) |
| stream_iter.js | 493.21 KB | 493.55 KB | +342.00 B (+0.07%) |
| test.js | 1.00 MB | 1.00 MB | +342.00 B (+0.03%) |
| url.js | 350.59 KB | 350.92 KB | +342.00 B (+0.10%) |
| webcrypto.js | 480.72 KB | 481.05 KB | +342.00 B (+0.07%) |
| modules.html | 185.38 KB | 185.65 KB | +276.00 B (+0.15%) |
| stream_iter.html | 395.33 KB | 395.60 KB | +276.00 B (+0.07%) |
| test.html | 895.25 KB | 895.52 KB | +276.00 B (+0.03%) |
| url.html | 364.07 KB | 364.34 KB | +276.00 B (+0.07%) |
| webcrypto.html | 601.24 KB | 601.50 KB | +276.00 B (+0.04%) |
| http.js | 759.99 KB | 760.16 KB | +171.00 B (+0.02%) |
| http2.js | 875.36 KB | 875.53 KB | +171.00 B (+0.02%) |
| util.js | 796.14 KB | 796.31 KB | +171.00 B (+0.02%) |
| http.html | 815.66 KB | 815.79 KB | +138.00 B (+0.02%) |
| http2.html | 838.34 KB | 838.48 KB | +138.00 B (+0.02%) |
| util.html | 735.87 KB | 736.01 KB | +138.00 B (+0.02%) |

Performance

Metric Base Head Diff
Elapsed time 78.79 s 79.33 s +540.00 ms (+0.69%)
User CPU time 168.30 s 168.24 s -60.00 ms (-0.04%)
System CPU time 4.86 s 4.73 s -130.00 ms (-2.67%)
Peak resident memory 5.78 GB 5.45 GB -338.95 MB (-5.72%)

@AugustinMauroy

Copy link
Copy Markdown
Member

not fan of yuk-parser too recent and zig

@araujogui

Copy link
Copy Markdown
Member

What's the advantage of yuku-parser compared to oxc?

@avivkeller

Copy link
Copy Markdown
Member Author

It doesn't crash the Node.js CI by requiring a native binding for niche platforms :-)

@bmuenzenmeyer

Copy link
Copy Markdown
Contributor

I feel the same as above - never heard of it and want to more thoroughly vet something going into core CI

@avivkeller

Copy link
Copy Markdown
Member Author

I can switch to swc, but Yuku claims to be much faster:
image

@avivkeller

Copy link
Copy Markdown
Member Author

IMO there's nothing wrong with using a smaller package, it's spec compliant, and this gives us the opportunity to work with other maintainers :-)

@bjohansebas

Copy link
Copy Markdown
Member

My only concern is who's behind the project—I mean, whether it's going to be maintained in the long run. At least with OXC, it's pretty clear it'll continue to be maintained, and the same is true for SWC because companies have a vested interest in it.

Whether it's written in another language doesn't really matter to me. What matters is who's maintaining it and what their long-term plans are.

@bmuenzenmeyer

Copy link
Copy Markdown
Contributor

I tried to check out their openssf scorecard, only to find https://github.com/yuku-toolchain/yuku/security - agree it looks fast, but we need HIGH SCRUTINY on every dep, in my opinion

@avivkeller

Copy link
Copy Markdown
Member Author

So do we want swc?

@avivkeller avivkeller closed this Jul 20, 2026
@bmuenzenmeyer

Copy link
Copy Markdown
Contributor

sorry if you felt pressured to close this. i sometimes crave a little more context and slowness. i saw some references to why this was needed, but it is still foggy to me if it can be solved within oxc or not

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants