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

Refactor multi-JVM testing #92

Open
Tracked by #116
sgammon opened this issue Nov 28, 2022 · 1 comment
Open
Tracked by #116

Refactor multi-JVM testing #92

sgammon opened this issue Nov 28, 2022 · 1 comment
Labels
enhancement New feature or request tools Issues and PRs related to tooling

Comments

@sgammon
Copy link
Member

sgammon commented Nov 28, 2022

Jake Wharton has a great blog post about testing on different JVM versions from Gradle rather than using a build matrix. We should do that!

@sgammon sgammon added enhancement New feature or request tools Issues and PRs related to tooling labels Nov 28, 2022
@sgammon
Copy link
Member Author

sgammon commented Nov 30, 2022

this got a bit more complex: we'll need copies of GraalVM, but there is no download plugin yet, so we will probably need to write our own. furthermore, there does not seem to be a way to "prepare" the JVM other than installing it to disk (i.e. running gu install * may be challenging).

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`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request tools Issues and PRs related to tooling
Projects
None yet
Development

No branches or pull requests

1 participant