forked from elide-dev/elide
-
Notifications
You must be signed in to change notification settings - Fork 0
feat(node): completes basic Node API compatibility (Waves A–C) #1
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
Open
akapug
wants to merge
45
commits into
main
Choose a base branch
from
gpt5-fun-4-windsurf
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ix Windows file URI; make conventions/remote optional - NodeURL: domainToASCII/Unicode; fileURLToPath/pathToFileURL roundtrip; urlToHttpOptions mapping (protocol, host, hostname, port, path) - NodeUrlHelpersTest: focused helper tests - PublishingConventions: use File.toURI for stage maven repo to avoid Windows file authority issues - settings.gradle.kts: gate includeBuild and remote apply via elide.includeConventions/elide.applyRemote flags (-P/-D)
…ts; seed compatibility matrix - NodeTimers module: delegates setTimeout/setInterval/clear* to global JsTimers; implements setImmediate/clearImmediate via setTimeout(0) - timers/promises: setTimeout/setImmediate with AbortSignal support for setTimeout - Tests: NodeTimersTest (shape), NodeTimersPromisesTest (shape) - COMPATIBILITY_MATRIX.md: initial matrix linking PRs 1617-1619 and new timers work
…ormance keys - Add stubbed Agent/ClientRequest/Server/ServerResponse/IncomingMessage/OutgoingMessage - Provide METHODS and STATUS_CODES maps; createServer/request/get placeholders - Keep behavior delegated to server intrinsics and follow-up PRs
…8, vm, worker_threads - punycode: toASCII/toUnicode via java.net.IDN; encode/decode TODO - repl: start placeholder - trace_events: createTracing/getEnabledCategories placeholders - v8: empty facade - vm: createContext/runIn* placeholders - worker_threads: isMainThread true; Worker placeholder
…eholders) - tls: createServer/connect/createSecureContext/getCiphers placeholders; default min/max version - tty: isatty placeholder returns false
…nts, v8, vm) for reflection
…/executionAsyncId/triggerAsyncId feat(node:punycode): add facade with toASCII/toUnicode (IDN); encode/decode TODO; add conformance test feat(node:repl,trace_events,v8,vm,worker_threads,tls,tty): minimal facades added earlier are hooked into reflection
feat(node:punycode): add minimal facade and conformance test Introduce node:punycode with toASCII/toUnicode via java.net.IDN Stub encode/decode; to be implemented later Add NodePunycodeTest for requiredMembers and a basic smoke case feat(node:repl): add minimal facade with start placeholder Register node:repl facade; no behavior yet feat(node:trace_events): add minimal facade and API surface Implement createTracing/getEnabledCategories placeholders Register TraceEventsAPI feat(node:v8): add minimal v8 facade Provide empty facade; register V8API feat(node:vm): add minimal vm facade Add createContext/runIn* placeholders; register VMAPI feat(node:worker_threads): add minimal facade Expose isMainThread=true; Worker placeholder Register WorkerThreadsAPI feat(node:tls): add minimal tls facade createServer/connect/createSecureContext/getCiphers placeholders Expose DEFAULT_MIN_VERSION/DEFAULT_MAX_VERSION constants Register TLSAPI feat(node:tty): add minimal tty facade (isatty) isatty returns false; register TtyAPI feat(node:async_hooks): add minimal facade and API surface createHook/executionAsyncId/triggerAsyncId placeholders Register AsyncHooksAPI chore(node:url,timers/promises): fix instantiation and promise usage NodeURL: instantiate URL with ProxyInstantiable.newInstance timers/promises: use GuestExecution.workStealing().promise with resolve/reject
… constants Implement NodeConstants facade with constants.os and constants.fs Register in NodeJsFeature and module loader
… constants - Implement NodeConstants facade with constants.os and constants.fs - Register in NodeJsFeature and module loader chore(node:url,timers/promises): fix instantiation and promise usage - NodeURL: instantiate URL via ProxyInstantiable.newInstance - timers/promises: use GuestExecution.workStealing().promise with resolve/reject feat(node:*): add minimal facades and API interfaces - async_hooks, punycode, repl, trace_events, v8, vm, worker_threads, tls, tty - Add missing API interfaces (AsyncHooksAPI, PunycodeAPI, ReplAPI, TraceEventsAPI, WorkerThreadsAPI, TtyAPI) - Register in NodeJsFeature where applicable feat(node:wasi): add minimal wasi module with WASI constructor placeholder
…dd basic shape tests using NodeModuleConformanceTest requiredMembers to lock module keys
…s, tty, vm, v8, tls, worker_threads, async_hooks
- vm: createContext/isContext/runIn* using current JS context evaluation and simple sandbox object - tls.getCiphers: return common cipher list; expose defaults - punycode.encode/decode: approximate via IDN toASCII/toUnicode (domain-like strings)
…ment useful baseline behaviors; tests for behavior added (not run here)
…nInContext; add binding behavior tests
… worker message delivery; expand secure context fields; add behavior tests
…handling in url; get cipher suites from JSSE when available; add behavior tests
…t object; refined vm context binding comments; JSSE cipher suites; UNC path fixes; RFC3492 punycode; tests
…,perf_hooks,process): implement baseline behaviors; add behavior tests
…behavior; add parity tests scaffold
…createServer/listen/close/address facade
…lementation; add stubs for register/syncBuiltinESMExports/findSourceMap/SourceMap
… satisfy conformance shape
…eConnection facades
…e:stream/consumers): implement basic text/buffer/arrayBuffer/json/blob consumers
…ty native builds and natives dependency on tests/build/check
…es=true for local Windows runs
…s=true or ELIDE_SKIP_NATIVES=true; unblock local test runs
… text() and wire conversions via TextDecoder/Encoder
…parity; keep end/destroy/on no-ops
…e, default result order, getServers stub); align handler fallthrough semantics
…+ global require fallback); compile verified
…dableStream; tests; note future loader hook for createRequire
…e uses executeGuest lambda; punycode test implements injectable; stream/consumers behavior test uses polyglotContext.javascript
…ere needed; add AbstractTest overrides
…t(true) lambda form
…pl, vm, perf_hooks, worker_threads, trace_events)
…ises, trace_events enabled categories) off DSL
…migrate to executeGuest(true) lambda
…mPromisesBehaviorTest off DSL
… + executeGuest(true)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR completes the basic Node API compatibility sweep across Elide’s GraalVM runtime, focusing on non-overlapping work with upstream PRs elide-dev#1617–elide-dev#1619 and aligning behavior with Node docs.
Highlights
Notes
Follow-ups (post-merge)
Thanks!
Pull Request opened by Augment Code with guidance from the PR author