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

Unify RPC modules #80

Closed
Tracked by #10 ...
sgammon opened this issue Nov 19, 2022 · 0 comments · Fixed by #116
Closed
Tracked by #10 ...

Unify RPC modules #80

sgammon opened this issue Nov 19, 2022 · 0 comments · Fixed by #116
Assignees
Labels
bug Something isn't working tools Issues and PRs related to tooling

Comments

@sgammon
Copy link
Member

sgammon commented Nov 19, 2022

Having rpc-jvm and rpc-js modules is inconsistent with other major modules, such as base and model. We should do this fast - i.e. before we hit beta.

@sgammon sgammon added bug Something isn't working tools Issues and PRs related to tooling labels Nov 19, 2022
@sgammon sgammon added this to the Release R1: Alpha 1 milestone Nov 19, 2022
@sgammon sgammon self-assigned this Nov 19, 2022
@sgammon sgammon mentioned this issue Nov 19, 2022
30 tasks
sgammon added a commit that referenced this issue Dec 11, 2022
- Move primary RPC code (JVM/JS)
- Amend for support for explicit mode
- Various cleanups

Relates to #80
@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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working tools Issues and PRs related to tooling
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

1 participant