Skip to content

[parity] node:worker_threads — 167 failing node-suite tests (2026-07-22 baseline) #6763

Description

@TheHypnoo

Part of the node-suite parity sweep of 2026-07-22 (full run: 3,815 tests, 3,019 pass, 79.1% — report test-parity/reports/parity_report_20260722_120605.json, oracle Node 26.5.0 per .node-version). Umbrella: #793.

node:worker_threads has 167 failing test(s) in test-parity/node-suite/worker_threads/.

Reproduce:

./run_parity_tests.sh --suite node-suite --module worker_threads

Failing tests

  • node-suite/worker_threads/broadcast-channel/close-and-clone — output mismatch
    • Node: typed clone: true 3,1,4 9,1,4
    • Perry: typed clone: false not-typed 9,1,4
  • node-suite/worker_threads/broadcast-channel/close-and-ref-idempotence — output mismatch
    • Node: ref return: true
    • Perry: ref return: true
  • node-suite/worker_threads/broadcast-channel/constructor-and-name — output mismatch
    • Node: missing TypeError ERR_MISSING_ARGS
    • Perry: missing name undefined string
  • node-suite/worker_threads/broadcast-channel/constructor-coercion-edges — output mismatch
    • Node: null name null
    • Perry: null name undefined
  • node-suite/worker_threads/broadcast-channel/custom-inspect — output mismatch
    • Node: custom: function TypeError:ERR_INVALID_THIS
    • Perry: custom: undefined TypeError:
  • node-suite/worker_threads/broadcast-channel/error-precedence — output mismatch
    • Node: open symbol: DataCloneError:25
    • Perry: open symbol: ok
  • node-suite/worker_threads/broadcast-channel/listener-once — output mismatch
    • Node: events: once:first,regular:first,regular:second
    • Perry: events: once:first,regular:first,once:second,regular:second
  • node-suite/worker_threads/broadcast-channel/messageevent-metadata — output mismatch
    • Node: event: true message payload true true
    • Perry: event: false message payload true true
  • node-suite/worker_threads/broadcast-channel/method-receivers — output mismatch
    • Node: name getter: function TypeError:ERR_INVALID_THIS
    • Perry: name getter: undefined TypeError:
  • node-suite/worker_threads/broadcast-channel/onmessage-replacement — output mismatch
    • Node: events: second:value,observer:value,observer:after-null
    • Perry: events: second:value,observer:value,observer:after-null
  • node-suite/worker_threads/broadcast-channel/post-message-missing — output mismatch
    • Node: post: TypeError ERR_MISSING_ARGS
    • Perry: post: ok
  • node-suite/worker_threads/broadcast-channel/shared-array-buffer — output mismatch
    • Node: brand/identity: true false
    • Perry: brand/identity: false false
  • node-suite/worker_threads/direct-message/handler-error — output mismatch
    • Node: direct: Error ERR_WORKER_MESSAGING_ERRORED
    • Perry: Error: direct-handler-boom
  • node-suite/worker_threads/direct-message/transferables — output mismatch
    • Node: delivered: true true 2,4,6,8 true
    • Perry: delivered: undefined undefined undefined false
  • node-suite/worker_threads/direct-message/validation — output mismatch
    • Node: missing id: Error ERR_WORKER_MESSAGING_FAILED
    • Perry: missing id: resolved
  • node-suite/worker_threads/environment-data/builtin-snapshot — output mismatch
    • Node: worker brands: true true true
    • Perry: worker brands: false false false
  • node-suite/worker_threads/environment-data/graph-snapshot — output mismatch
    • Node: graph: true true 11
    • Perry: graph: false false missing
  • node-suite/worker_threads/environment-data/nested-inheritance — output mismatch
    • Node: levels: 0 1
    • Perry: levels: missing missing
  • node-suite/worker_threads/environment-data/uncloneable-construction — output mismatch
    • Node: construct: DataCloneError 25
    • Perry: construct: ok
  • node-suite/worker_threads/environment-data/worker-snapshot — output mismatch
    • Node: worker initial: 1 1,2
    • Perry: worker initial: missing missing
  • node-suite/worker_threads/main-thread/export-surface — output mismatch
    • Node: BroadcastChannel true function
    • Perry: BroadcastChannel true function
  • node-suite/worker_threads/main-thread/process-worker-event — output mismatch
    • Node: event observed: true
    • Perry: event observed: false
  • node-suite/worker_threads/main-thread/process-worker-event-late-emit — output mismatch
    • Node: late emit: true true
    • Perry: exit: 0
  • node-suite/worker_threads/main-thread/prototype-surface — output mismatch
    • Node: Worker postMessage true function undefined false
    • Perry: Worker postMessage false undefined undefined undefined
  • node-suite/worker_threads/message-channel/constructor-call-rules — output mismatch
    • Node: brand: true true
    • Perry: brand: true true
  • node-suite/worker_threads/message-channel/constructor-options — output mismatch
    • Node: none true true
    • Perry: none false false
  • node-suite/worker_threads/message-channel/move-closed-validation — output mismatch
    • Node: closed: Error:ERR_CLOSED_MESSAGE_PORT
    • Perry: closed: ok
  • node-suite/worker_threads/message-channel/move-context-filehandle-error — output mismatch
    • Node: transfer: ok true
    • Perry: transfer: ok false
  • node-suite/worker_threads/message-channel/move-context-realm-brand — output mismatch
    • Node: realm brand: false MessagePort
    • Perry: realm brand: true MessagePort
  • node-suite/worker_threads/message-port/clone-error-rollback — output mismatch
    • Node: post: DataCloneError 25
    • Perry: post: ok
  • node-suite/worker_threads/message-port/close-callback-idempotent — output mismatch
    • Node: close events: port1-callback,port1-event,port2-event,second-callback
    • Perry: close events: port1-event,port2-event
  • node-suite/worker_threads/message-port/close-callback-order — output mismatch
    • Node: first: sync,A,B,C
    • Perry:
  • node-suite/worker_threads/message-port/close-dispatch-flush — output mismatch
    • Node: outside dispatch: empty
    • Perry: outside dispatch: empty
  • node-suite/worker_threads/message-port/close-ordering — output mismatch
    • Node: events: message:before-close,port1-close,port2-close
    • Perry: events: port1-close,port2-close
  • node-suite/worker_threads/message-port/closed-transfer-error-brand — output mismatch
    • Node: error: DataCloneError 25 true true DOMException
    • Perry: transfer: ok
  • node-suite/worker_threads/message-port/custom-event-emit — output mismatch
    • Node: emit return: true
    • Perry: emit return: unsupported
  • node-suite/worker_threads/message-port/custom-inspect-ref-state — output mismatch
    • Node: custom: function
    • Perry: custom: undefined
  • node-suite/worker_threads/message-port/distinct-listener-order — output mismatch
    • Node: events: first:value,second:value,third:value
    • Perry: events: third:value
  • node-suite/worker_threads/message-port/duplicate-transfer — output mismatch
    • Node: duplicate buffer: DataCloneError 25
    • Perry: duplicate buffer: ok
  • node-suite/worker_threads/message-port/event-ports — output mismatch
    • Node: event ports: 1 true function
    • Perry: event ports: 0 false undefined
  • node-suite/worker_threads/message-port/frozen-eventtarget-prototype — output mismatch
    • Node: frozen: true
    • Perry: frozen: true
  • node-suite/worker_threads/message-port/listener-first-registration — output mismatch
    • Node: on+on: 2 1
    • Perry: on+on: 0 unsupported
  • node-suite/worker_threads/message-port/listener-removal-once — output mismatch
    • Node: events: once:first,on:first,on:second
    • Perry: events: on:first,on:second
  • node-suite/worker_threads/message-port/listener-scope — output mismatch
    • Node: events: second-message,close
    • Perry: events:
  • node-suite/worker_threads/message-port/listener-validation — output mismatch
    • Node: on null: ok
    • Perry: on null: ok
  • node-suite/worker_threads/message-port/listeners-while-closing — output mismatch
    • Node: closing port: ok,ok,ok,ok
    • Perry: closing port: ok,ok,ok,ok
  • node-suite/worker_threads/message-port/max-listeners-remove-all — output mismatch
    • Node: methods: function function
    • Perry: methods: undefined undefined
  • node-suite/worker_threads/message-port/messageevent-constructor — output mismatch
    • Node: event: message 1 worker-origin event-1
    • Perry: event: undefined missing undefined undefined
  • node-suite/worker_threads/message-port/messageevent-defaults-coercion — output mismatch
    • Node: default message null null 0
    • Perry: default undefined undefined undefined undefined undefined missing
  • node-suite/worker_threads/message-port/messageevent-iterables — output mismatch
    • Node: iterable: 1 2 true true
    • Perry: iterable: 0 missing false false
  • node-suite/worker_threads/message-port/method-receivers — output mismatch
    • Node: postMessage undefined TypeError
    • Perry: postMessage undefined ok
  • node-suite/worker_threads/message-port/node-event-target-surface — output mismatch
    • Node: methods: addListener:function,emit:function,eventNames:function,listenerCount:function,listeners:undefined,off:function,on:function,once:function,prependListener:undefined,prependOnceListener:undefined,rawListeners:undefined,removeAllListeners:function,removeListener:function
    • Perry: methods: addListener:function,emit:undefined,eventNames:undefined,listenerCount:undefined,listeners:undefined,off:function,on:function,once:function,prependListener:undefined,prependOnceListener:undefined,rawListeners:undefined,removeAllListeners:undefined,removeListener:function
  • node-suite/worker_threads/message-port/off-pending-once — output mismatch
    • Node: counts: 1 0 0
    • Perry: counts: unsupported unsupported 0
  • node-suite/worker_threads/message-port/on-listener-dedup — output mismatch
    • Node: first: first
    • Perry: first:
  • node-suite/worker_threads/message-port/on-listener-event-scope — output mismatch
    • Node: events: message:value,close
    • Perry: events:
  • node-suite/worker_threads/message-port/once-registry-after-fire — output mismatch
    • Node: before: 1
    • Perry: before: unsupported
  • node-suite/worker_threads/message-port/onmessage-event — output mismatch
    • Node: event: message 7 true true 0
    • Perry: event: message 7 true true missing
  • node-suite/worker_threads/message-port/onmessage-nonfunction — output mismatch
    • Node: before: function true 1
    • Perry: before: function true unsupported
  • node-suite/worker_threads/message-port/post-message-missing — output mismatch
    • Node: post: TypeError ERR_MISSING_ARGS
    • Perry: post: ok
  • node-suite/worker_threads/message-port/post-message-validation — output mismatch
    • Node: function: DataCloneError:25
    • Perry: function: ok
  • node-suite/worker_threads/message-port/prototype-own-surface — output mismatch
    • Node: own names: close,constructor,hasRef,onmessage,onmessageerror,postMessage,ref,start,unref
    • Perry: own names: close,constructor,hasRef,onmessage,onmessageerror,postMessage,ref,start,unref
  • node-suite/worker_threads/message-port/queued-before-peer-close — output mismatch
    • Node: message-first: message:first,message:second,close
    • Perry:
  • node-suite/worker_threads/message-port/receive-after-start — output mismatch
    • Node: empty: undefined
    • Perry: empty: undefined
  • node-suite/worker_threads/message-port/receive-fifo-validation — output mismatch
    • Node: initial: empty
    • Perry: initial: empty
  • node-suite/worker_threads/message-port/ref-after-peer-close — output mismatch
    • Node: after peer close: false 2 function
    • Perry: after peer close: true unsupported function
  • node-suite/worker_threads/message-port/ref-state — output mismatch
    • Node: initial: false
    • Perry: initial: true
  • node-suite/worker_threads/message-port/self-and-closed-transfer — output mismatch
    • Node: self transfer: DataCloneError 25
    • Perry: self transfer: ok
  • node-suite/worker_threads/message-port/tampered-listener-registry — output mismatch
    • Node: registry: 1 close,message,newListener,removeListener 0 0
    • Perry: registry error: TypeError listenerCount is not a function
  • node-suite/worker_threads/message-port/transfer-during-close-flush — output mismatch
    • Node: deliveries: 2
    • Perry: deliveries: 1
  • node-suite/worker_threads/message-port/transfer-iterables — output mismatch
    • Node: valid set: 0 true 7
    • Perry: valid set: 4 false missing
  • node-suite/worker_threads/message-port/transfer-iterator-error — output mismatch
    • Node: same error: true iterator-boom
    • Perry: post: ok
  • node-suite/worker_threads/message-port/transfer-iterator-shapes — output mismatch
    • Node: missing next: TypeError:ERR_INVALID_ARG_TYPE
    • Perry: missing next: ok
  • node-suite/worker_threads/message-port/transfer-options — output mismatch
    • Node: detached: 0 0 0
    • Perry: detached: 1 1 1
  • node-suite/worker_threads/message-port/transfer-state-validation — output mismatch
    • Node: source transfer: DataCloneError:25
    • Perry: source transfer: ok
  • node-suite/worker_threads/message-port/transfer-target — output mismatch
    • Node: post: ok
    • Perry: post: ok
  • node-suite/worker_threads/message-port/unread-transferred-port-close — output mismatch
    • Node: peer closed
    • Perry:
  • node-suite/worker_threads/message-port/unref-delivery — output mismatch
    • Node: events: a,b,c
    • Perry: events: a,b,c
  • node-suite/worker_threads/structured-clone/arraybuffer-clone — output mismatch
    • Node: clone shape: true true true
    • Perry: clone shape: false false false
  • node-suite/worker_threads/structured-clone/arraybuffer-transfer — output mismatch
    • Node: detached: 0 0 0
    • Perry: detached: 8 8 2
  • node-suite/worker_threads/structured-clone/builtin-types — output mismatch
    • Node: post: ok
    • Perry: post: TypeError:
  • node-suite/worker_threads/structured-clone/cycles-and-aliases — output mismatch
    • Node: post: ok
    • Perry: post: TypeError:
  • node-suite/worker_threads/structured-clone/detached-retransfer — output mismatch
    • Node: detached: 0 0
    • Perry: detached: 8 8
  • node-suite/worker_threads/structured-clone/filehandle-transfer — output mismatch
    • Node: clone: DataCloneError 25 true
    • Perry: clone: accepted true
  • node-suite/worker_threads/structured-clone/message-port-transfer — output mismatch
    • Node: transferred type: true
    • Perry: transferred type: false
  • node-suite/worker_threads/structured-clone/multiple-shared-arraybuffers — output mismatch
    • Node: brands: true,true,true,true
    • Perry: brands: false,false,false,false
  • node-suite/worker_threads/structured-clone/multiple-views-transfer — output mismatch
    • Node: source detached: 0 0 TypeError
    • Perry: source detached: 16 16 16
  • node-suite/worker_threads/structured-clone/shared-array-buffer — output mismatch
    • Node: brand/identity: true false 8
    • Perry: brand/identity: false false undefined
  • node-suite/worker_threads/structured-clone/transfer-rollback — output mismatch
    • Node: invalid after buffer: DataCloneError:25 8
    • Perry: invalid after buffer: ok 8
  • node-suite/worker_threads/structured-clone/transfer-validation — output mismatch
    • Node: duplicate buffer: DataCloneError:25 8
    • Perry: duplicate buffer: ok 8
  • node-suite/worker_threads/structured-clone/url-rejection — output mismatch
    • Node: port: DataCloneError:25
    • Perry: port: ok
  • node-suite/worker_threads/transfer-markers/marker-privacy — output mismatch
    • Node: private clone mark: 0 value DataCloneError:25
    • Perry: private clone mark: 0 value ok
  • node-suite/worker_threads/transfer-markers/marker-semantics — output mismatch
    • Node: primitive: undefined undefined false
    • Perry: primitive: undefined undefined true
  • node-suite/worker_threads/transfer-markers/uncloneable-port-transfer — output mismatch
    • Node: transfer: ok
    • Perry: transfer: ok
  • node-suite/worker_threads/transfer-markers/uncloneable-post — output mismatch
    • Node: root: DataCloneError:25
    • Perry: root: Error:
  • node-suite/worker_threads/transfer-markers/untransferable-transfer — output mismatch
    • Node: buffer transfer: true DataCloneError:25 8
    • Perry: buffer transfer: true ok 8
  • node-suite/worker_threads/web-locks/web-locks-callback-settlement — output mismatch
    • Node: sync: 42
    • Perry: sync: 42
  • node-suite/worker_threads/worker-lifecycle/argv-base — output mismatch
    • Node: file: true true ["null","42"] no-error 0
    • Perry: file: true false [] no-error 0
  • node-suite/worker_threads/worker-lifecycle/argv-options — output mismatch
    • Node: invalid option: throw TypeError ERR_INVALID_ARG_TYPE
    • Perry: invalid entry: []
  • node-suite/worker_threads/worker-lifecycle/async-dispose — output mismatch
    • Node: method: function
    • Perry: method: undefined
  • node-suite/worker_threads/worker-lifecycle/captured-output — output mismatch
    • Node: message: written
    • Perry: worker-stdout
  • node-suite/worker_threads/worker-lifecycle/constructor-rollback — output mismatch
    • Node: name: TypeError:ERR_INVALID_ARG_TYPE 3 9,8,7
    • Perry: name: created 3 9,8,7
  • node-suite/worker_threads/worker-lifecycle/constructor-validation — output mismatch
    • Node: uncloneable workerData: DataCloneError:25
    • Perry: uncloneable workerData: ok
  • node-suite/worker_threads/worker-lifecycle/data-and-environment — output mismatch
    • Node: parent detached: 0 0
    • Perry: parent detached: 4 4
  • node-suite/worker_threads/worker-lifecycle/env-isolation — output mismatch
    • Node: worker: parent-value worker-change worker-value no-error
    • Perry: worker: parent-value worker-change worker-value no-error
  • node-suite/worker_threads/worker-lifecycle/env-options — output mismatch
    • Node: invalid env: TypeError ERR_INVALID_ARG_TYPE
    • Perry: invalid env: ok
  • node-suite/worker_threads/worker-lifecycle/error-ordering — output mismatch
    • Node: error: TypeError controlled worker failure
    • Perry: TypeError: controlled worker failure
  • node-suite/worker_threads/worker-lifecycle/eval-error — output mismatch
    • Node: events: online,error:TypeError:eval-boom,exit:1
    • Perry: TypeError: eval-boom
  • node-suite/worker_threads/worker-lifecycle/eval-stack-getter-error — output mismatch
    • Node: error: Error:stack-boom:true
    • Perry: Error: stack-boom
  • node-suite/worker_threads/worker-lifecycle/eval-syntax-error — output mismatch
    • Node: error: true:SyntaxError
    • Perry: construct: Error
  • node-suite/worker_threads/worker-lifecycle/eval-unserializable-error — output mismatch
    • Node: error: object:false:true:[object Object]:undefined:undefined
    • Perry: Uncaught exception: [object] (bits=0x7FFD04F8D6D77C90)
  • node-suite/worker_threads/worker-lifecycle/eventemitter-listeners — output mismatch
    • Node: events: online-once,online-on,once:first,on:first,on:second,exit:0
    • Perry: events: online-once,online-on,once:first,on:first,on:second,exit:0
  • node-suite/worker_threads/worker-lifecycle/execargv-options — output mismatch
    • Node: parent: ["--experimental-strip-types"]
    • Perry: parent: []
  • node-suite/worker_threads/worker-lifecycle/exit-code-explicit — output mismatch
    • Node: explicit: exit:5
    • Perry:
  • node-suite/worker_threads/worker-lifecycle/exit-code-property — output mismatch
    • Node: exitCode: message:set,exit:7
    • Perry: exitCode: message:set,exit:0
  • node-suite/worker_threads/worker-lifecycle/exit-listener-error — output mismatch
    • Node: events: exit,uncaught:exit-listener-boom
    • Perry: Error: exit-listener-boom
  • node-suite/worker_threads/worker-lifecycle/exit-unreachable-code — output mismatch
    • Node: events: none
    • Perry:
  • node-suite/worker_threads/worker-lifecycle/file-url-unicode — output mismatch
    • Node: message: unicode-ok:url-π-worker.cjs
    • Perry: construct: Error
  • node-suite/worker_threads/worker-lifecycle/filehandle-construction-rollback — output mismatch
    • Node: clone rollback: DataCloneError:25 true 5:const
    • Perry: clone rollback: created true 5:const
  • node-suite/worker_threads/worker-lifecycle/filehandle-map-set — output mismatch
    • Node: construction: ok true
    • Perry: construction: ok false
  • node-suite/worker_threads/worker-lifecycle/filehandle-name-validation — output mismatch
    • Node: construction: TypeError ERR_INVALID_ARG_TYPE false
    • Perry: construction: ok false
  • node-suite/worker_threads/worker-lifecycle/filehandle-orphan-rollback — output mismatch
    • Node: construction: DataCloneError 25 false
    • Perry: construction: ok false
  • node-suite/worker_threads/worker-lifecycle/filehandle-orphan-transfer — output mismatch
    • Node: construction: ok true
    • Perry: construction: ok false
  • node-suite/worker_threads/worker-lifecycle/filehandle-workerdata-alias — output mismatch
    • Node: parent detached: true
    • Perry: parent detached: false
  • node-suite/worker_threads/worker-lifecycle/filename-validation — output mismatch
    • Node: undefined TypeError ERR_INVALID_ARG_TYPE
    • Perry: undefined Error
  • node-suite/worker_threads/worker-lifecycle/global-postmessage-override — output mismatch
    • Node: message: echo:value
    • Perry: message: echo:value
  • node-suite/worker_threads/worker-lifecycle/inheritance-brands — output mismatch
    • Node: main port: true true
    • Perry: main port: true false
  • node-suite/worker_threads/worker-lifecycle/internal-thread-flag — output mismatch
    • Node: main: false false true
    • Perry: main: false false true
  • node-suite/worker_threads/worker-lifecycle/listener-validation — output mismatch
    • Node: on null: TypeError ERR_INVALID_ARG_TYPE
    • Perry: on null: ok
  • node-suite/worker_threads/worker-lifecycle/multiple-worker-ids — output mismatch
    • Node: parent positive: true
    • Perry: parent positive: true
  • node-suite/worker_threads/worker-lifecycle/natural-exit-terminate — output mismatch
    • Node: events: online,message:natural,exit:0,terminate:undefined
    • Perry: events: online,message:natural,exit:0,terminate:1
  • node-suite/worker_threads/worker-lifecycle/node-options-env-validation — output mismatch
    • Node: construct: Error ERR_WORKER_INVALID_EXEC_ARGV
    • Perry: construct: ok
  • node-suite/worker_threads/worker-lifecycle/option-validation-precedence — output mismatch
    • Node: argv before env: Error argv-coercion
    • Perry: argv before env: ok
  • node-suite/worker_threads/worker-lifecycle/parent-port-onmessage — output mismatch
    • Node: values: {"type":"message","data":4,"target":true,"source":true},undefined,null,0
    • Perry: values: missing
  • node-suite/worker_threads/worker-lifecycle/parent-port-ref — output mismatch
    • Node: states: false false false false true
    • Perry: states: unsupported false unsupported false unsupported
  • node-suite/worker_threads/worker-lifecycle/post-exit-diagnostics — output mismatch
    • Node: utilization: active,idle,utilization number,number,number true
    • Perry: utilization: active,idle,utilization number,number,number false
  • node-suite/worker_threads/worker-lifecycle/post-exit-safe-methods — output mismatch
    • Node: exit: 0 -1 null
    • Perry: exit: 0 1
  • node-suite/worker_threads/worker-lifecycle/post-message-transfer — output mismatch
    • Node: source detached: 0 0
    • Perry: source detached: 4 4
  • node-suite/worker_threads/worker-lifecycle/postmessage-errors — output mismatch
    • Node: function: DataCloneError 25
    • Perry: function: ok
  • node-suite/worker_threads/worker-lifecycle/postmessage-missing — output mismatch
    • Node: post: TypeError ERR_MISSING_ARGS
    • Perry: post: ok
  • node-suite/worker_threads/worker-lifecycle/postmessage-shared-array-buffer — output mismatch
    • Node: worker: true 1,2,3,4 1,8,3,4
    • Perry: worker: false 1,2,3,4 1,8,3,4
  • node-suite/worker_threads/worker-lifecycle/postmessage-url-rejection — SIGSEGV (exit 139)
    • Perry died after printing 1 line(s); Node exited 0.
    • Last Perry line: ./run_parity_tests.sh: line 118: 13782 Segmentation fault: 11 $TIMEOUT_CMD "$seconds" "$@"
  • node-suite/worker_threads/worker-lifecycle/process-env-descriptors — output mismatch
    • Node: descriptors: missing-flags:TypeError:ERR_INVALID_OBJECT_DEFINE_PROPERTY|accessor:TypeError:ERR_INVALID_OBJECT_DEFINE_PROPERTY|valid:ok:42:true
    • Perry: descriptors: missing-flags:ok:undefined:false|accessor:ok:undefined:false|valid:ok:undefined:true
  • node-suite/worker_threads/worker-lifecycle/process-unsupported — output mismatch
    • Node: writable: true true
    • Perry: writable: true true
  • node-suite/worker_threads/worker-lifecycle/queued-port-receive — output mismatch
    • Node: received: queued 2 true
    • Perry: received: missing missing true
  • node-suite/worker_threads/worker-lifecycle/resource-limits-metadata — output mismatch
    • Node: main: {}
    • Perry: main: {}
  • node-suite/worker_threads/worker-lifecycle/share-env — output mismatch
    • Node: worker initial: initial
    • Perry: worker initial: initial
  • node-suite/worker_threads/worker-lifecycle/share-env-tree — output mismatch
    • Node: C observations: null main
    • Perry: C observations: b main
  • node-suite/worker_threads/worker-lifecycle/terminate-idempotent — output mismatch
    • Node: promise identity: false
    • Perry: promise identity: false
  • node-suite/worker_threads/worker-lifecycle/thread-metadata — output mismatch
    • Node: parent initial: true parity-worker
    • Perry: parent initial: true parity-worker
  • node-suite/worker_threads/worker-lifecycle/thread-name-defaults — output mismatch
    • Node: missing WorkerThread WorkerThread
    • Perry: missing
  • node-suite/worker_threads/worker-lifecycle/unreferenced-arraybuffer-transfer — output mismatch
    • Node: detached: 0
    • Perry: detached: 8
  • node-suite/worker_threads/worker-lifecycle/unsupported-paths — output mismatch
    • Node: bare relative TypeError ERR_WORKER_PATH
    • Perry: bare relative Error
  • node-suite/worker_threads/worker-lifecycle/url-eval-validation — output mismatch
    • Node: construct: TypeError ERR_INVALID_ARG_VALUE
    • Perry: construct: Error
  • node-suite/worker_threads/worker-lifecycle/worker-created-buffers-after-exit — output mismatch
    • Node: brands: true true
    • Perry: brands: false false
  • node-suite/worker_threads/worker-lifecycle/worker-created-port-after-exit — output mismatch
    • Node: port: true queued-before-exit
    • Perry: port: false empty
  • node-suite/worker_threads/worker-lifecycle/worker-eventemitter-surface — output mismatch
    • Node: methods: addListener:function,emit:function,eventNames:function,getMaxListeners:function,listenerCount:function,listeners:function,off:function,on:function,once:function,prependListener:function,prependOnceListener:function,rawListeners:function,removeAllListeners:function,removeListener:function,setMaxListeners:function
    • Perry: methods: addListener:undefined,emit:undefined,eventNames:undefined,getMaxListeners:undefined,listenerCount:undefined,listeners:undefined,off:function,on:function,once:function,prependListener:undefined,prependOnceListener:undefined,rawListeners:undefined,removeAllListeners:undefined,removeListener:undefined,setMaxListeners:undefined
  • node-suite/worker_threads/worker-lifecycle/workerdata-alias-view — output mismatch
    • Node: parent: 4 4 4660
    • Perry: parent: 4 4 4660
  • node-suite/worker_threads/worker-lifecycle/workerdata-builtins — output mismatch
    • Node: brands: true true true true bigint true
    • Perry: brands: true false false true bigint false
  • node-suite/worker_threads/worker-lifecycle/workerdata-cycle — SIGSEGV (exit 139)
    • Perry died after printing 1 line(s); Node exited 0.
    • Last Perry line: ./run_parity_tests.sh: line 118: 25447 Segmentation fault: 11 $TIMEOUT_CMD "$seconds" "$@"
  • node-suite/worker_threads/worker-lifecycle/workerdata-defaults — output mismatch
    • Node: omitted: false undefined false undefined
    • Perry: omitted: false object true undefined
  • node-suite/worker_threads/worker-lifecycle/workerdata-multiple-ports — output mismatch
    • Node: ports: true true true
    • Perry: ports: false false true
  • node-suite/worker_threads/worker-lifecycle/workerdata-port-alias — output mismatch
    • Node: port alias: true true true
    • Perry: port alias: false false false
  • node-suite/worker_threads/worker-lifecycle/workerdata-port-map — output mismatch
    • Node: map: map true true none
    • Perry: map: map false false none
  • node-suite/worker_threads/worker-lifecycle/workerdata-port-set — output mismatch
    • Node: set: set true true none
    • Perry: set: set false false none
  • node-suite/worker_threads/worker-lifecycle/workerdata-port-surface — output mismatch
    • Node: surface: true addListener:function,off:function,on:function,once:function,postMessage:function
    • Perry: surface: false addListener:function,off:undefined,on:function,once:undefined,postMessage:function
  • node-suite/worker_threads/worker-lifecycle/workerdata-port-transfer — output mismatch
    • Node: worker port: true function
    • Perry: worker port: false function
  • node-suite/worker_threads/worker-lifecycle/workerdata-shared-array-buffer — output mismatch
    • Node: worker: true 1,2,3,4 9,2,3,4
    • Perry: worker: false 1,2,3,4 9,2,3,4

Activity

  1. added
    parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
    on Jul 22, 2026
  2. proggeramlug commented on Aug 12, 2026

    @proggeramlug
    Contributor

    Scoping note from the #7988 / perry/thread realm-isolation work (PR #7994).

    Almost none of this issue is downstream of the realm-isolation bugs
    (#7988, #7981, #7954, and the newly filed #8001 / #8002 / #8003). Sampling the
    167 failures, they are overwhelmingly missing surface, not realm aliasing:

    • BroadcastChannel — missing ERR_MISSING_ARGS throws, missing
      ERR_INVALID_THIS brand checks, missing DataCloneError, once-listener
      semantics, MessageEvent metadata, structured clone of typed arrays.
    • MessagePort / MessageChannel — missing ERR_CLOSED_MESSAGE_PORT,
      close-callback ordering and idempotence, transfer-list validation.
    • environment-data / direct-message — getEnvironmentData /
      setEnvironmentData / postMessageToThread largely absent.
    • main-thread/prototype-surface — Worker.prototype.postMessage is not on the
      prototype at all.

    That is a structured-clone + error-taxonomy + Web-ish-API project, not a GC
    or realm-isolation project. node:worker_threads is also a different
    threading surface from perry/thread: it needs per-worker realms behind an
    explicit message port, whereas perry/thread ships closures and deep-copies
    values.

    The realm-isolation work is a precondition, not a subset: a Worker running
    on an OS thread inherits every entry in the #8001-#8003 inventory, so building
    the surface on today's process-global intrinsics would reproduce those bugs at a
    higher level. But fixing them closes approximately zero of the 167.

    Recommendation: keep this as an umbrella and split it by subsystem — per the
    repo's "granular per-gap issues, not umbrellas" convention — into roughly

    1. BroadcastChannel (surface + error taxonomy + clone),
    2. MessagePort/MessageChannel + transfer lists,
    3. environment-data + postMessageToThread,
    4. Worker surface and process worker events,
    5. structured clone (DataCloneError, typed arrays, SAB identity),

    each with its own failing-test list from
    test-parity/node-suite/worker_threads/. Each is independently shippable; the
    current single list of 167 is not a task anyone can pick up.

  3. proggeramlug commented on Aug 18, 2026

    @proggeramlug
    Contributor

    Closed after #8347 was merged. The historical worker_threads baseline in this umbrella ticket has been addressed incrementally; any remaining or newly discovered gaps should be tracked in focused follow-up issues.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystem

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions