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

Virtualized VM filesystem #99

Closed
Tracked by #398 ...
sgammon opened this issue Dec 2, 2022 · 0 comments · Fixed by #116
Closed
Tracked by #398 ...

Virtualized VM filesystem #99

sgammon opened this issue Dec 2, 2022 · 0 comments · Fixed by #116
Assignees
Labels
feature Large PRs or issues with full-blown features module:graalvm Modules, changes, and issues relating to GraalVM

Comments

@sgammon
Copy link
Member

sgammon commented Dec 2, 2022

In order to support multi-module loading (and, later, code splitting), we will need to implement a file system interface which loads VM JS modules from the JAR classpath, or from embedded asset descriptors.

@sgammon sgammon added module:graalvm Modules, changes, and issues relating to GraalVM feature Large PRs or issues with full-blown features labels Dec 2, 2022
@sgammon sgammon added this to the Release R2: Alpha 2 milestone Dec 2, 2022
@sgammon sgammon self-assigned this Dec 2, 2022
@sgammon sgammon linked a pull request Jan 4, 2023 that will close this issue
sgammon added a commit that referenced this issue Jan 13, 2023
Complete rewrite of the JavaScript VM (now on v3), with new support for native Kotlin-backed intrinsics, virtual file systems, and more.

Related PRs:
- Base: #106 

Related issues:
- Fixes #80
- Fixes #90
- Fixes #92
- Fixes #99
- #89 
  - Fixes #107 
  - Fixes #108 
  - Fixes #112 

## Changelog

- Add pooling for VM contexts backed by fixed thread pool
- Rewrite and cleanup execution bridge into VM
- Simplify coordinated use of coroutines + threads
- Pre-warm set of contexts (when directed)
- Prep for Java-native intrinsics
- Upgrade Kotlin -> ~~`1.8.0-RC`~~ `1.8.0`
- Upgrade Gradle -> `8.0` (nightly testing)
- Upgrade all eligible dependencies
- Type-aliased annotations
  - DI engine (`jakarta.inject.*`)
  - Micronaut annotations (`io.micronaut.annotations.*`)
- Proto refactors for `alpha2`
  - Transition all packages to `elide.*`
  - Proto3 generator structure
- Improve `base` module
  - Increase supported target set
- Unify RPC modules
- Introduce new `core` module
  - Move pure-Kotlin core code
  - Investigate providing a native entrypoint
  - Increase supported target set
    - `wasm32`
    - iOS/macOS native targets
    - Linux native targets
    - Windows native targets
- New CLI distribution
  - Command line interface and structure
  - `elide run` / `elide shell`
    - Interactive execution of JS
    - File (script) execution
    - Code snippet execution
    - Execute from `stdin`
    - Architecture support
      - x86 Darwin
      - arm64 Darwin
      - x86 Linux
    - JS execution environment
      - JS VM v3
      - Configurability of VM from CLI
      - Intrinsics installed
      - Runtime installed
  - CLI distribution
    - One-line installer
- New intrinsics
  - Structure + testing to load/resolve intrinsics
  - Validate global names
  - Mount to VM
  - Console
  - Base64
  - URL
  - Errors
    - `ValueError`
    - `TypeError`
    - Exception bridge
- VM Thread synchronization
  - Manual (Java threads)
  - Disruptor support
- Stable guest VM implementation
  - API surface definitions
  - New VM invocation interface
    - Workers interface compatibility
- Internal VM changes
  - Warmup phase for contexts
  - No modification of userland code
  - JS module support
- Model support
  - Introduce support for Flatbuffers
  - Translate model to flatbuffers
- New runtime facade
  - Bazel/Closure/TypeScript/J2CL
  - Ship optimized/minified bundle
  - Embed and load in VM on context init
  - Mark sources for runtime as internal
  - Rules to test Elide from a Bazel build
- Repository rules to download an Elide distribution from a Bazel build
  - Facade types and interface
    - `console`
    - `base64`
- VFS support for guest VMs
  - Write Proto model definitions
  - Select implementation and plan structure
  - Implement VFS and provide to VM
    - VFS from plain tarball
    - VFS from compressed tarball
- JS VM: Imports & CJS
  - Support for `require`
  - Support for `import`
@sgammon sgammon closed this as completed Jan 14, 2023
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Large PRs or issues with full-blown features module:graalvm Modules, changes, and issues relating to GraalVM
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

1 participant