-
-
Notifications
You must be signed in to change notification settings - Fork 144
Comparing changes
Open a pull request
base repository: NativeScript/android
base: main
head repository: NativeScript/android
compare: alpha/9.1
- 16 commits
- 43 files changed
- 1 contributor
Commits on Aug 15, 2026
-
feat(runtime): ESM resolver hardening and async module-graph loader
Canonicalize module identity into three registry shapes — http(s) URLs, custom schemes (node:, blob:, optional:), and absolute file paths — and key the module registries by v8::Isolate instead of thread_local storage. import() now rejects missing bare specifiers instead of installing placeholders; optional-module placeholders are built without string interpolation, detection is unified in IsLikelyOptionalModule, and module source preserves embedded NUL bytes. Thenables handed to the loader from JS are adopted properly. Blob URLs (blob:nativescript/<uuid>) become first-class module identities via URL.createObjectURL and URL.InternalAccessor. The prewarm/prefetch machinery is replaced by an async module-graph loader; boot hands off to a manual runloop that pumps pending module work when the entry script has not reached the main looper yet (e.g. a top-level-await entry still loading its graph). Load surfaces the failure cause to callers, and relative import() against a filesystem referrer keeps the already-absolute path instead of prefixing the application root twice.
Configuration menu - View commit details
-
Copy full SHA for f8116c3 - Browse repository at this point
Copy the full SHA f8116c3View commit details -
feat(runtime): HMR dev-sessions and a hardened HTTP session loader
Dev sessions serve the app's module graph over HTTP during development, with a mechanism-only dev-loader contract: policy stays in JS tooling, the runtime supplies fetch/registry/invalidations. The loader is deny-by-default — remote allowlist entries only authorize URLs on a URL-component boundary ('/', '?', '#' or exact match), refusing lookalike-host and lookalike-port bypasses; a specific port must be listed explicitly. Hot-path hash containers use robin_hood maps. Per-fetch URL logging is opt-in via the httpFetchUrlLog config flag (volume is one line per fetch), alongside the existing logScriptLoading-gated diagnostics. The previous HMRSupport/DevFlags sources are replaced by HttpLoader (JNI HttpURLConnection).Configuration menu - View commit details
-
Copy full SHA for c70d3ee - Browse repository at this point
Copy the full SHA c70d3eeView commit details -
feat(runtime): expose the dev-loader surface as the ns:module builtin
The dev-loader control surface (HttpLoader) is reachable from JS as the ns:module builtin module: NsBuiltinModules routes ns:module through BuildNsModuleBinding — the binding builder decides build-dependent membership — and ns-module.js (compiled in via js2c) shapes and freezes whatever arrives. docs/ns-builtin-modules.md documents the surface.
Configuration menu - View commit details
-
Copy full SHA for 776831c - Browse repository at this point
Copy the full SHA 776831cView commit details -
fix(worker): surface entry-script load errors and buffer early messages
Worker entry-script load failures now reach worker.onerror instead of failing silently. Messages posted before the worker's entry script has installed onmessage are no longer dropped: ConcurrentQueue::Signal re-arms the drain source without enqueueing (a silent no-op when racing Terminate), and WorkerWrapper retries delivery through a deferred drain, with drainRetryPending_ preventing one stacked retry per attempt.
Configuration menu - View commit details
-
Copy full SHA for 7f13b3c - Browse repository at this point
Copy the full SHA 7f13b3cView commit details -
test: cover the ESM loader, remote-module security, and worker behavior
The ns:module surface, remote-module allowlist boundary matching, and relative ESM dynamic-import cases exercise the async loader and the deny-by-default HTTP gate. The on-device result harvester falls back to run-as when adb root is unavailable (Play Store emulator images), and -Pabis is forwarded so a single-ABI V8 tree can build and test locally.
Configuration menu - View commit details
-
Copy full SHA for 6a818e5 - Browse repository at this point
Copy the full SHA 6a818e5View commit details -
Configuration menu - View commit details
-
Copy full SHA for c206bce - Browse repository at this point
Copy the full SHA c206bceView commit details -
refactor(runtime): rename HMRSupport to HttpLoader and fold DevFlags …
…into ns:runtime Live log flags (logScriptLoading, httpFetchUrlLog) move onto ns:runtime setConfig/getConfig. Remote-module security stays boot-time nativescript.config only. Android does not expose releasedObjectPolicy.
Configuration menu - View commit details
-
Copy full SHA for 91cd30c - Browse repository at this point
Copy the full SHA 91cd30cView commit details -
fix(runtime): harden HTTP fetch, extend names, and worker drain retries
JNI mid-body read exceptions no longer spin the JS thread, async fetch threads detach from the JVM, and canonicalization config is published as an immutable snapshot so configureLoader cannot race a background fetch.
Configuration menu - View commit details
-
Copy full SHA for 4886f9a - Browse repository at this point
Copy the full SHA 4886f9aView commit details -
feat: reloadApplication for JS bundle restart without restarting app …
…process Helpful for programmatic reset of JS isolate for clean restart of JS application as well as OTA (over-the-air) updates without restarting the entire app process.
Configuration menu - View commit details
-
Copy full SHA for 0bd021d - Browse repository at this point
Copy the full SHA 0bd021dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 49ededc - Browse repository at this point
Copy the full SHA 49ededcView commit details -
Configuration menu - View commit details
-
Copy full SHA for bb92b36 - Browse repository at this point
Copy the full SHA bb92b36View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6b7b5bc - Browse repository at this point
Copy the full SHA 6b7b5bcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 003655d - Browse repository at this point
Copy the full SHA 003655dView commit details -
Configuration menu - View commit details
-
Copy full SHA for cffea7d - Browse repository at this point
Copy the full SHA cffea7dView commit details -
Configuration menu - View commit details
-
Copy full SHA for d102e6c - Browse repository at this point
Copy the full SHA d102e6cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9998502 - Browse repository at this point
Copy the full SHA 9998502View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...alpha/9.1