-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
feat: initial work on embedded dispatch #838
Conversation
WalkthroughWalkthroughThe recent updates encompass a holistic refinement of the Elide Embedded system, spanning documentation enhancements, native interoperability classes introduction, Kotlin implementation advancements, dispatcher optimizations, and robust testing mechanisms. These changes collectively elevate the system's functionality and performance. Changes
Recent Review DetailsConfiguration used: CodeRabbit UI Files ignored due to path filters (11)
Files selected for processing (43)
Files not summarized due to errors (1)
Files skipped from review due to trivial changes (1)
Files skipped from review as they are similar to previous changes (38)
Additional Context UsedLanguageTool (6)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
New and removed dependencies detected. Learn more about Socket for GitHub ↗︎
🚮 Removed packages: npm/lz-string@1.5.0 |
9560132
to
573dc3a
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #838 +/- ##
==========================================
- Coverage 36.12% 35.83% -0.30%
==========================================
Files 506 501 -5
Lines 16117 15868 -249
Branches 2140 2132 -8
==========================================
- Hits 5823 5686 -137
+ Misses 9894 9791 -103
+ Partials 400 391 -9
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 4 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 20
Out of diff range and nitpick comments (2)
packages/embedded/module.md (1)
Line range hint
1-1
: Capitalize the first letter of the document title to maintain consistency and formality in documentation.-# Module embedded +# Module Embeddedpackages/embedded/build.gradle.kts (1)
13-13
: Clarify the purpose of configuration properties.Consider adding comments to explain the purpose of the
nativeTest
property and how it affects the build process. This will help other developers understand the significance of this configuration.
packages/embedded/src/main/kotlin/elide/embedded/ElideEmbedded.kt
Outdated
Show resolved
Hide resolved
packages/embedded/src/main/java/elide/embedded/interop/NativeAppCallbackHolder.java
Show resolved
Hide resolved
packages/embedded/src/main/java/elide/embedded/interop/NativeAppCallbackHolder.java
Show resolved
Hide resolved
packages/embedded/src/main/java/elide/embedded/interop/NativeAppCallbackHolder.java
Show resolved
Hide resolved
packages/embedded/src/test/kotlin/elide/embedded/native/NativeLibrary.kt
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
overall great, just some basic questions
packages/embedded/src/main/java/elide/embedded/interop/NativeAppCallbackHolder.java
Show resolved
Hide resolved
packages/embedded/src/test/kotlin/elide/embedded/native/ElideNativeLibrary.kt
Show resolved
Hide resolved
- simplified core api. - micronaut di container. - improved testing. - run native interop tests conditionally. - add JVM runtime tests. - adjust verbosity of Micronaut loggers for tests. - app implementation. - native API for embedded apps. - observable app lifecycle methods. Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com> wip(embedded): native callbacks for app lifecycle methods.
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
- initial dispatcher implementation. - improved runtime interop. Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
2646579
to
a4d1d4b
Compare
Summary
This PR adds initial work on the Elide Embedded module, which allows native
applications to embed the Elide runtime as a shared library. The embedded
runtime is designed to act as a hosting engine, providing request dispatch
and guest app management capabilities.
Native API
A basic C API is exposed to allow host applications to manage the runtime via
GraalVM. Additional types are defined in elide_embedded_types.h.
Runtime Lifecycle
Host applications are expected to make use of a single runtime instance for all
operations. The runtime itself is thread-safe and can handle concurrent calls
to any of the exposed functions.
The first step is to initialize the runtime, passing a configuration struct to
indicate the desired settings for the instance.
After initialization, guest applications can be registered and managed, but
request processing will not be available until the runtime is started.
Guest Applications
A guest application is a self-contained unit capable of processing requests
using code written in a language supported by Elide. Applications are added
to the runtime and provide a scope for request dispatch.
Tests
There are two main test suites for the embedded runtime:
host, and have no knowledge of native features.
generated binary, this allow coverage of the actual distribution.
Upcoming work
The features introduced by this PR are the foundation of the future embedded
module. Request dispatch is not currently implemented in full as it requires
guest language intrinsics that are yet to be designed.
The goal of this PR is to establish the main native API by which host apps can
interact with Elide, and serve as a proof of concept for native embeddings of
the runtime.