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

SSR engine: Known issues #89

Closed
7 tasks done
Tracked by #32
sgammon opened this issue Nov 24, 2022 · 0 comments
Closed
7 tasks done
Tracked by #32

SSR engine: Known issues #89

sgammon opened this issue Nov 24, 2022 · 0 comments
Assignees
Labels
bug Something isn't working module:graalvm Modules, changes, and issues relating to GraalVM module:server Modules, changes, and issues relating to Elide for servers

Comments

@sgammon
Copy link
Member

sgammon commented Nov 24, 2022

The SSR engine is obviously very early, and GraalVM does not support several key NodeJS interfaces. We will likely need to shim many of these interfaces to achieve perfect interop with SSR executions of libraries like React.

This has been filed to keep track of this issue and will be updated with missing functionality as it is determined

Known issues with SSR

@sgammon sgammon added bug Something isn't working module:graalvm Modules, changes, and issues relating to GraalVM module:server Modules, changes, and issues relating to Elide for servers labels Nov 24, 2022
@sgammon sgammon added this to the Release R2: Alpha 2 milestone Nov 24, 2022
@sgammon sgammon self-assigned this Nov 24, 2022
@sgammon sgammon mentioned this issue Nov 24, 2022
10 tasks
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 module:graalvm Modules, changes, and issues relating to GraalVM module:server Modules, changes, and issues relating to Elide for servers
Projects
Status: Done
Development

No branches or pull requests

1 participant