Giter Club home page Giter Club logo

elide-dev / elide Goto Github PK

View Code? Open in Web Editor NEW
89.0 5.0 15.0 437.59 MB

fast polyglot runtime

Home Page: https://elide.dev

License: MIT License

Dockerfile 0.63% Kotlin 59.24% JavaScript 13.68% Shell 1.48% Protocol Buffer 3.24% Makefile 0.36% Handlebars 0.01% CSS 0.02% Java 13.91% Cap'n Proto 0.41% Python 0.09% Ruby 0.03% Swift 0.01% Batchfile 0.07% C 6.68% Rust 0.11% TypeScript 0.01% Smarty 0.02%
kotlin multiplatform jvm graalvm native java javascript runtime

elide's Introduction

Elide

elide: verb. to omit (a sound or syllable) when speaking. to join together; to merge.


Code of Conduct
Python 3.11.x

Latest: 1.0.0-alpha10


Elide is a cloud-first polyglot runtime for developing fast web applications. It aims to reduce the barriers between languages and improve performance of existing code, without forcing developers to abandon their favorite APIs and libraries.

Important

Elide is still in alpha, some features are not fully supported and others may fail on certain environments.

Installation

You can install the runtime by running:

curl -sSL --tlsv1.2 elide.sh | bash -s -

After installation, you can run elide help or elide info to see more information.

Other ways to try Elide

You can also use Elide in a container, or in a GitHub Codespace.

Using Elide via Docker

docker run --rm -it ghcr.io/elide-dev/elide --help
elide --help

Using Elide via GitHub Codespaces

We provide a GitHub Codespace with Elide pre-installed. You can click below to try it out, right from your browser:

Open in GitHub Codespaces

Features

The Elide CLI supports JavaScript out of the box, and includes experimental support for Python, while more languages such as Ruby are planned for future releases.

Multi-language

With Elide, you can write your app in any combination of JavaScript, Python, Ruby, and JVM. You can even pass objects between languages, and use off-the-shelf code from multiple dependency ecosystems (e.g. NPM and Maven Central) all without leaving the warm embrace of your running app.

That means fast polyglot code with:

  • No network border, no IPC border
  • No serialization requirement

"Just enough" Node API support

Elide supports enough of the Node API to run things like React and MUI. Just like platforms such as Cloudflare Workers and Bun, Elide aims for drop-in compatibility with most Node.js software, but does not aim to be a full replacement.

Dotenv support

Elide provides .env files support at the runtime level, without the need for manual configuration or third-party packages. Environment variables from .env files will be picked up and injected into the application using a language-specific API (e.g. process.env in JavaScript).

Closed-world I/O

Elide, by default, works on a closed-world I/O assumption, meaning that it will not allow access to the host machine's file system unless told to do so. This is a security feature but also an immutability feature which can be used to "seal" your application or perform advanced build caching.

Server engine

Let's see an example, the following JavaScript application configures a built-in HTTP server and adds a route handler with path variables:

// access the built-in HTTP server engine
const app = Elide.http;

// register a route handler
app.router.handle("GET", "/hello/:name", (request, response, context) => {
  // respond using the captured path variables
  response.send(200, `Hello, ${context.params.name}`);
});

// configure the server binding options
app.config.port = 3000;

// receive a callback when the server starts
app.config.onBind(() => {
  console.log(`Server listening at "http://localhost:${app.config.port}"! ๐Ÿš€`);
});

// start the server
app.start();

The server can be started with:

> elide serve app.js
> elide 17:43:09.587 DEBUG Server listening at "http://localhost:3000"! ๐Ÿš€

Important

The Elide HTTP intrinsics are under active development and provide only limited features. We are actively working to improve performance and support more use cases.

Planned features

The following features are currently planned or under construction:

  • Secret management: access secrets as environment variables visible only to your application, decouple your code from secret management SDKs and let the runtime handle that complexity for you.
  • Isolated I/O: use pre-packaged archives to provide read-only, sealed Virtual File Systems, allowing access to the host File System only where needed.
  • Built-in telemetry: managed, configurable integration with telemetry APIs.
  • Native distributions: build your app into a truly native binary using GraalVM's Native Image technology, ship optimized applications without including a runtime in your container.

Use with server frameworks

Elide integrates with Micronaut to provide Server-Side and Hybrid rendering options with very high performance, by running JavaScript code inside your JVM server:

// gradle.properties
elideVersion = 1.0.0-alpha9
// settings.gradle.kts
val elideVersion: String by settings

dependencyResolutionManagement {
  versionCatalogs {
    create("framework") {
      from("dev.elide:elide-bom:$elideVersion")
    }
  }
}

// then, in your build.gradle.kts files, add the modules you want...
implementation(framework.elide.core)
implementation(framework.elide.base)
implementation(framework.elide.server)

See our samples to explore the features available when integrating with server frameworks, the following code for a server application uses React with Server-Side Rendering:

// server/App.kt
/** State properties for the root page. */
@Props data class HelloProps (
  @Polyglot val name: String = "Elide"
)

/** GET `/`: Controller for index page. */
@Page class Index : PageWithProps<HelloProps>(HelloProps::class) {
  /** @return Props to use when rendering this page. */
  override suspend fun props(state: RequestState) =
    HelloProps(name = state.request.parameters["name"] ?: "Elide v3")

  // Serve an HTML page with isomorphic React SSR.
  @Get("/") suspend fun index(request: HttpRequest<*>) = html(request) {
    head {
      title { +"Hello, Elide!" }
      stylesheet("/styles/base.css")
      stylesheet("/styles/main.css")
      script("/scripts/ui.js", defer = true)
    }
    body {
      render()  // ๐Ÿ‘ˆ this line executes javascript without leaving your JVM!
    }
  }

  // Serve styles for the page.
  @Get("/styles/main.css") fun styles() = css {
    rule("body") {
      backgroundColor = Color("#bada55")
    }
    rule("strong") {
      fontFamily = "-apple-system, BlinkMacSystemFont, sans-serif"
    }
  }

  // Serve the built & embedded JavaScript.
  @Get("/scripts/ui.js") suspend fun js(request: HttpRequest<*>) = script(request) {
    module("scripts.ui")
  }
}

By evaluating the JavaScript code built using a Kotlin/JS browser app:

// client/main.kt

// React props for a component
external interface HelloProps: Props {
  var name: String
}

// React component which says hello
val HelloApp = FC<HelloProps> { props ->
  div {
    strong {
      +props.name
    }
  }
}

// Entrypoint for the browser
fun main() {
  hydrateRoot(
    document.getElementById("root"),
    Fragment.create() {
      HelloApp {
        name = "Elide"
      }
    }
  )
}

Note

More versatile integration with frameworks like Micronaut and Ktor is planned but not yet supported. The API and packages used for these integrations may change as we add more features.

Version compatibility

The following version matrix indicates tested support across tool and platform versions, including Java, Kotlin, GraalVM, Micronaut, and React.

Following this guide is recommended but optional. Depending on the style of development you're doing with Elide, you may not need some of these components:

Status Java Kotlin GraalVM Micronaut React Protobuf/gRPC
Status Java 23 2.0.0 24.1.x 4.4.x 19.x 3.25.2/1.61.0
Status Java 21 2.0.0-Beta4 23.1.x 4.3.x 18.x 3.25.2/1.61.0
Status Java 20 1.9.20 23.0.x 4.0.x 18.x 3.21.11/1.56.1
Status Java 20 1.9.10 23.0.x 3.11.x 18.x 3.21.11/1.56.1
Status Java 17 1.8.20 22.3.x 3.9.x 18.x 3.21.11/1.42.0
Status Java 11 1.7.22 22.3.x 3.5.x 18.x 3.20.1/1.46.0
Status Java 8-10 -- -- -- -- --

Language support

The following version matrix describes language support for Elide, including JavaScript, Python, Ruby, WASM, and experimental languages (LLVM, JVM) and future languages which could be supported based on the architecture:

Language Status Version Elide release Sandboxing Server Coverage VFS Debugger
JavaScript Status ECMA 2023 alpha4+ โœ… Full support โœ… โœ… โœ… โœ…
WebAssembly Status WASI P2 alpha4+ โœ… (With JS) โœ… (With JS) โœ… โœ… โœ…
Python Status 3.11.x alpha7+ Not supported Not supported โœ… โš ๏ธ โœ…
Ruby Status 3.2 alpha8+ Not supported Not supported โœ… โš ๏ธ โœ…
Java Status Java 22 edge โœ… Partial support Not supported Experimental Experimental โœ…
Kotlin Status Java 22 edge โœ… Partial support Not supported Experimental Experimental โœ…
LLVM Status 12.0.1 edge โš ๏ธ Requires license Not supported Not supported N/A โœ…
TypeScript Status 5.x.x Future release N/A N/A N/A N/A N/A
CUDA Status N/A Future release N/A N/A N/A N/A N/A
PHP Status 7.x Future release N/A N/A N/A N/A N/A
.NET Status ECMA 335 Future release N/A N/A N/A N/A N/A
Groovy Status 4.0.x Future release N/A N/A N/A N/A N/A
Scala Status 3.4.x Future release N/A N/A N/A N/A N/A

Performance

For officialy supported languages, rough benchmarks are shown below, for server performance, language performance, and startup time:

Language Server Language Startup
JavaScript ~660K RPS (75x vs. Node 20) (Unavailable) ~0.5s
Python (Unavailable) Up to ~3.0x CPython ~0.5s
Ruby (Unavailable) Up to ~22.4x CRuby ~1.5s

Note

Newer languages don't have clear benchmarks yet; more are coming soon.

Reports

Licensing

Elide itself is licensed under MIT as of November 2022. Dependencies are scanned for license compatibility; the report is available via FOSSA:

FOSSA Status

Building and using Elide with Oracle GraalVM requires license compliance through Oracle. For more information, see the GraalVM website.

Coverage

Code coverage is continuously reported to Codecov and SonarCloud:

Coverage grid

Contributing

Issue reports and pull requests are welcome! See our contribution guidelines or join our discord community and let us know which features you would like to see implemented, or simply participate in the discussions to help shape the future of the project.

Star History

Star History Chart

elide's People

Contributors

darvld avatar dependabot[bot] avatar fossabot avatar mfwgenerics avatar renovate[bot] avatar sgammon avatar sschuberth avatar step-security-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

elide's Issues

Convention plugins

It would be great to provide Elide users with pre-packaged Kotlin DSL plugins which configure various build setups.

React SSR Support

It's already possible to make React SSR work, and there is a code sample for it, but it can be pretty slow:

  • Source objects are re-parsed on every load. Everything is loaded fresh every time, which is definitely not necessary. Source objects can intelligently cache if we leverage it.
  • Some code is loaded at runtime. It would be best to expose the JS runtime calls at compile time, so that AOT can optimize them.
  • Inputs. State sharing hasn't been explored yet, but if we kept this hashable, caching would be really easy.

Unify RPC modules

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.

ABI validation

It would be ideal to have an ABI check step before publishing library updates.

Virtualized VM filesystem

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.

State sharing breaks native SSR

See below:

โžœ  elide-v3 git:(v3) โœ— ./samples/fullstack/react-ssr/server/build/native/nativeCompile/server
01:03:47.245 [io.micronaut.context.DefaultBeanContext:main] INFO  sample - Reading bootstrap environment configuration
01:03:47.280 [io.micronaut.runtime.Micronaut:main] INFO  sample - Startup completed in 73ms. Server Running: http://localhost:8080
01:04:22.786 [elide.runtime.graalvm.JsRuntime:pool-7-thread-1] DEBUG sample - Setting JS VM property: 'StaticProperty(symbol=js.strict, staticValue=true)': 'true'
01:04:22.786 [elide.runtime.graalvm.JsRuntime:pool-7-thread-1] DEBUG sample - Setting JS VM property: 'RuntimeProperty(name=vm.js.ecma, symbol=js.ecmascript-version, defaultValue=2020, getter=null)': '2020'
01:04:23.061 [io.micronaut.http.server.RouteExecutor:io-executor-thread-2] ERROR sample - Unexpected error occurred: TypeError: invokeMember (state) on elide.runtime.graalvm.JsRuntime$ExecutionInputs@7eadfe1a failed due to: Unknown identifier: state
org.graalvm.polyglot.PolyglotException: TypeError: invokeMember (state) on elide.runtime.graalvm.JsRuntime$ExecutionInputs@7eadfe1a failed due to: Unknown identifier: state
	at <js>.Companion.x(Unnamed:25192)
	at <js>.renderContent_0(Unnamed:25710)
	at <js>.renderContent(Unnamed:25707)
	at org.graalvm.polyglot.Value.execute(Value.java:841)
	at elide.runtime.graalvm.JsRuntime.evalExecuteScript$graalvm(JsRuntime.kt:698)
	at elide.runtime.graalvm.JsRuntime$executeBackground$1.invoke(JsRuntime.kt:725)
	at elide.runtime.graalvm.JsRuntime$executeBackground$1.invoke(JsRuntime.kt:724)
	at elide.runtime.graalvm.JsRuntime$ManagedContext.exec(JsRuntime.kt:385)
	at elide.runtime.graalvm.JsRuntime$Companion$VMExecution.call(JsRuntime.kt:91)
	at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
	at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:74)
	at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.lang.Thread.run(Thread.java:833)
	at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
	at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)

IDEA configurations

It would be good to ice IDEA configurations into project Gradle configs. Namely:

  • Pointing directly at GraalVM instead of detecting JDKs
  • Testing / run profiles
  • Coverage configurations

Ktor support

It has been requested to support Ktor in addition to Micronaut

gRPC-Web Integration

Currently, grpc-web requires a middleman proxy to function against Java servers. That's because the browser doesn't yet talk pure gRPC, sure there is a slightly different protocol which must be mediated between the browser and backing gRPC server.

It would be really cool if we could run this layer within the JVM, where we wouldn't have to jump a network boundary or run a separate process.

Future considerations:

  • Not full parity with ESPv2. Later, we could consider adding API key checking and quota tracking, etc.
  • No authorization. JWT authorization is handled by Micronaut in general; integrating with that is ideal
  • Client-side code. To do this properly, we'd either need to code-gen bindings (which requires two layers of translation), or we need to get creative and integrate in a deeper way with the new asset system. Later work for sure.

Version catalog, Java platform

It would be great to provide downstream users with a built-in version catalog and Java platform artifact, which they can use to automatically align versions in their targets.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Repository problems

These problems occurred while renovating this repository. View logs.

  • WARN: Package lookup failures

Pending Approval

These branches will be created by Renovate only once you click their checkbox below.

  • fix(deps): pin dependencies (express, gcr.io/cloud-builders/docker, mcr.microsoft.com/vscode/devcontainers/base, slsa-framework/slsa-github-generator, us-docker.pkg.dev/elide-fw/samples/site/docs/jvm, us-docker.pkg.dev/elide-fw/tools/builder, us-docker.pkg.dev/elide-fw/tools/runtime/native, us-docker.pkg.dev/elide-fw/tools/runtime/native/alpine)
  • chore(deps): update actions/cache digest to e12d46a
  • chore(deps): update actions/checkout digest
  • chore(deps): update actions/dependency-review-action digest to cc4f653
  • chore(deps): update actions/setup-node digest to 1a4442c
  • chore(deps): update alpine:3.18.2 docker digest to 82d1e9d
  • chore(deps): update debian:bookworm-slim docker digest to 804194b
  • chore(deps): update elide-dev/setup-graalvm digest to 809512d
  • chore(deps): update ghcr.io/elide-dev/base/alpine docker digest to 12fdc4a
  • chore(deps): update ghcr.io/elide-dev/base:latest docker digest to 89ed766
  • chore(deps): update gradle/wrapper-validation-action digest to 56b90f2
  • chore(deps): update jetbrains/qodana-action digest to 694e2ff
  • chore(deps): update superfly/flyctl-actions digest to fc53c09
  • chore(deps): update ubuntu:22.04 docker digest to 19478ce
  • chore(deps): update actions/dependency-review-action action to v3.1.5
  • chore(deps): update actions/deploy-pages action to v2.0.5
  • chore(deps): update actions/setup-node action to v3.8.2
  • chore(deps): update actions/upload-artifact action to v3.1.3
  • chore(deps): update bufbuild/buf-breaking-action action to v1.1.4
  • chore(deps): update codecov/codecov-action action to v3.1.6
  • chore(deps): update dependency @types/google-protobuf to v3.15.12
  • chore(deps): update dependency com.google.cloud.artifactregistry.gradle-plugin to v2.2.1
  • chore(deps): update dependency com.google.protobuf to v0.9.4
  • chore(deps): update dependency com.jprofiler to v14.0.3
  • chore(deps): update dependency me.champeau.jmh to v0.7.2
  • chore(deps): update dependency nl.littlerobots.version-catalog-update to v0.8.4
  • chore(deps): update dependency org.gradle.wrapper-upgrade to v0.11.4
  • chore(deps): update dependency org.jetbrains.kotlinx.knit to v0.5.0
  • chore(deps): update dependency org.jlleitschuh.gradle.ktlint to v11.6.1
  • chore(deps): update dependency prettier-plugin-toml to v1.0.1
  • chore(deps): update detekt to v1.23.6 (io.gitlab.arturbosch.detekt, io.gitlab.arturbosch.detekt:detekt-gradle-plugin)
  • chore(deps): update dokka to v1.9.20 (org.jetbrains.dokka, org.jetbrains.dokka:dokka-gradle-plugin)
  • chore(deps): update gradletestretry to v1.5.9 (org.gradle.test-retry, org.gradle:test-retry-gradle-plugin)
  • chore(deps): update kotlinx.benchmark to v0.4.11 (org.jetbrains.kotlinx.benchmark, org.jetbrains.kotlinx:kotlinx-benchmark-runtime)
  • chore(deps): update ksp to v1.9.24-1.0.20 (com.google.devtools.ksp, com.google.devtools.ksp:symbol-processing-gradle-plugin, com.google.devtools.ksp:symbol-processing, com.google.devtools.ksp:symbol-processing-api)
  • chore(deps): update plugin build.less to v1.0.0-rc2
  • chore(deps): update plugin org.gradle.wrapper-upgrade to v0.11.4
  • fix(deps): update arrow to v1.2.4 (io.arrow-kt:arrow-fx-coroutines, io.arrow-kt:arrow-optics-ksp-plugin, io.arrow-kt:arrow-optics, io.arrow-kt:arrow-core, io.arrow-kt:arrow-stack)
  • fix(deps): update dependency com.github.luben:zstd-jni to v1.5.6-3
  • fix(deps): update dependency com.google.guava:guava to v32.1.3-jre
  • fix(deps): update dependency dev.elide:elide-uuid to v1.9.21-0.10.0
  • fix(deps): update dependency io.netty.incubator:netty-incubator-transport-native-io_uring to v0.0.25.final
  • fix(deps): update dependency io.projectreactor:reactor-bom to v2022.0.19
  • fix(deps): update dependency org.apache.ant:ant-junit to v1.10.14
  • fix(deps): update dependency org.checkerframework:checker-compat-qual to v2.5.6
  • fix(deps): update dependency org.fusesource.jansi:jansi to v2.4.1
  • fix(deps): update dependency org.msgpack:msgpack-core to v0.9.8
  • fix(deps): update dependency org.xerial.snappy:snappy-java to v1.1.10.5
  • fix(deps): update dependency postcss to v8.4.38
  • fix(deps): update elide (dev.elide:elide-proto-kotlinx, dev.elide:elide-proto-flatbuffers, dev.elide:elide-proto-protobuf, dev.elide:elide-proto-core, dev.elide:elide-server, dev.elide:elide-base, dev.elide:elide-core, dev.elide.tools.kotlin.plugin:redakt-plugin, dev.elide.tools:compiler-util, dev.elide.tools:elide-processor, dev.elide:elide-rpc, dev.elide:elide-model, dev.elide:elide-graalvm-react, dev.elide:elide-graalvm-js, dev.elide:elide-graalvm, dev.elide:elide-frontend, dev.elide:elide-bom, dev.elide:elide-test)
  • fix(deps): update elidetools (dev.elide.tools.kotlin.plugin:redakt-plugin, dev.elide.tools:elide-processor)
  • fix(deps): update graalvm to v23.1.3 (org.graalvm.ruby:ruby-shared, org.graalvm.ruby:ruby-annotations, org.graalvm.ruby:ruby-resources, org.graalvm.ruby:ruby-language, org.graalvm.wasm:wasm-language, org.graalvm.python:python-resources, org.graalvm.python:python-language-enterprise, org.graalvm.python:python-language, org.graalvm.python:python-launcher, org.graalvm.polyglot:lsp, org.graalvm.polyglot:profiler, org.graalvm.polyglot:heap, org.graalvm.polyglot:inspect, org.graalvm.polyglot:insight, org.graalvm.polyglot:dap, org.graalvm.polyglot:coverage, org.graalvm.polyglot:tools, org.graalvm.polyglot:java, org.graalvm.polyglot:llvm, org.graalvm.polyglot:wasm, org.graalvm.polyglot:python, org.graalvm.polyglot:ruby, org.graalvm.polyglot:js-isolate, org.graalvm.polyglot:js, org.graalvm.polyglot:polyglot, org.graalvm.nativeimage:native-image-base, org.graalvm.nativeimage:svm, org.graalvm.tools:lsp_api, org.graalvm.js:js-launcher, org.graalvm.sdk:launcher-common, org.graalvm.espresso:espresso-language, org.graalvm.espresso:hotswap, org.graalvm.espresso:polyglot, org.graalvm.js:js-language, org.graalvm.js:js-isolate, org.graalvm.js:js-scriptengine, org.graalvm.regex:regex, org.graalvm.llvm:llvm-language-managed-resources, org.graalvm.llvm:llvm-language-managed, org.graalvm.llvm:llvm-language-native-enterprise, org.graalvm.llvm:llvm-language-native-resources, org.graalvm.llvm:llvm-language-native, org.graalvm.llvm:llvm-language-nfi, org.graalvm.llvm:llvm-language-enterprise, org.graalvm.llvm:llvm-language, org.graalvm.llvm:llvm-api, org.graalvm.truffle:truffle-nfi-native-darwin-aarch64, org.graalvm.truffle:truffle-nfi-native-darwin-amd64, org.graalvm.truffle:truffle-nfi-native-linux-aarch64, org.graalvm.truffle:truffle-nfi-native-linux-amd64, org.graalvm.truffle:truffle-nfi-libffi, org.graalvm.truffle:truffle-nfi-panama, org.graalvm.truffle:truffle-nfi, org.graalvm.truffle:truffle-dsl-processor, org.graalvm.truffle:truffle-enterprise, org.graalvm.truffle:truffle-api, org.graalvm.shadowed:antlr4, org.graalvm.shadowed:icu4j, org.graalvm.shadowed:jline, org.graalvm.shadowed:json)
  • fix(deps): update junit5 monorepo to v5.10.2 (org.junit.jupiter:junit-jupiter-params, org.junit.jupiter:junit-jupiter-engine, org.junit.jupiter:junit-jupiter-api, org.junit.jupiter:junit-jupiter)
  • fix(deps): update netty monorepo to v4.1.110.final (io.netty:netty-resolver-dns-native-macos, io.netty:netty-transport-native-kqueue, io.netty:netty-transport-native-epoll, io.netty:netty-transport-native-unix-common, io.netty:netty-bom)
  • fix(deps): update netty.tcnative to v2.0.65.final (io.netty:netty-tcnative-boringssl-static, io.netty:netty-tcnative)
  • fix(deps): update picocli to v4.7.6 (info.picocli:picocli-shell-jline3, info.picocli:picocli-codegen, info.picocli:picocli)
  • fix(deps): update projectreactor.netty to v1.1.19 (io.projectreactor.netty:reactor-netty-http, io.projectreactor.netty:reactor-netty-core, io.projectreactor.netty:reactor-netty)
  • fix(deps): update slf4j monorepo to v2.0.13 (org.slf4j:log4j-over-slf4j, org.slf4j:jul-to-slf4j, org.slf4j:slf4j-jdk14, org.slf4j:slf4j-api)
  • fix(deps): update swagger to v2.2.22 (io.swagger.core.v3:swagger-models, io.swagger.core.v3:swagger-annotations)
  • chore(deps): update actions/checkout action to v3.6.0
  • chore(deps): update alpine docker tag to v3.20.0
  • chore(deps): update benchmark-action/github-action-benchmark action to v1.20.3
  • chore(deps): update bufbuild/buf-lint-action action to v1.1.1
  • chore(deps): update bufbuild/buf-push-action action to v1.2.0
  • chore(deps): update bufbuild/buf-setup-action action to v1.32.2
  • chore(deps): update buildconfig.plugin to v4.2.0 (com.github.gmazzo.buildconfig, com.github.gmazzo.buildconfig:plugin)
  • chore(deps): update dependency com.autonomousapps.dependency-analysis to v1.32.0
  • chore(deps): update dependency com.bmuschko.docker-java-application to v9.4.0
  • chore(deps): update dependency com.google.cloud.tools.jib to v3.4.3
  • chore(deps): update dependency com.gradle.common-custom-user-data-gradle-plugin to v1.13
  • chore(deps): update dependency com.gradleup.gr8 to v0.10
  • chore(deps): update dependency com.osacky.doctor to v0.10.0
  • chore(deps): update dependency gradle to v8.8
  • chore(deps): update dependency io.freefair.lombok to v8.6
  • chore(deps): update dependency org.cyclonedx.bom to v1.8.2
  • chore(deps): update dependency org.jetbrains.kotlin.plugin.dataframe to v0.13.1
  • chore(deps): update dependency org.spdx.sbom to v0.8.0
  • chore(deps): update dependency prettier to v3.3.1
  • chore(deps): update dependency prettier-plugin-java to v2.6.0
  • chore(deps): update dependency prettier-plugin-properties to v0.3.0
  • chore(deps): update dependency prettier-plugin-sh to v0.14.0
  • chore(deps): update dependency webpack to v5.91.0
  • chore(deps): update docker/login-action action to v3.2.0
  • chore(deps): update docker/setup-buildx-action action to v2.10.0
  • chore(deps): update github/codeql-action action to v2.25.8
  • chore(deps): update google-github-actions/auth action to v1.3.0
  • chore(deps): update graalvm.plugin to v0.10.2 (org.graalvm.buildtools.native, org.graalvm.buildtools.native:org.graalvm.buildtools.native.gradle.plugin)
  • chore(deps): update graalvm/setup-graalvm action to v1.2.1
  • chore(deps): update gradle/gradle-build-action action to v2.12.0
  • chore(deps): update ilammy/msvc-dev-cmd action to v1.13.0
  • chore(deps): update kotlinx.abivalidator to v0.14.0 (org.jetbrains.kotlinx.binary-compatibility-validator, org.jetbrains.kotlinx:binary-compatibility-validator)
  • chore(deps): update kover.plugin to v0.8.0 (org.jetbrains.kotlinx.kover, org.jetbrains.kotlinx:kover-gradle-plugin)
  • chore(deps): update micronaut.plugin to v4.4.0 (io.micronaut.test-resources-consumer, io.micronaut.test-resources, io.micronaut.minimal.library, io.micronaut.minimal.application, io.micronaut.docker, io.micronaut.graalvm, io.micronaut.library, io.micronaut.component, io.micronaut.crac, io.micronaut.aot, io.micronaut.application, io.micronaut.gradle:micronaut-gradle-plugin, io.micronaut.gradle:micronaut-docker-plugin)
  • chore(deps): update openrewrite.plugin to v6.15.1 (org.openrewrite.rewrite, org.openrewrite:plugin)
  • chore(deps): update ossf/scorecard-action action to v2.3.3
  • chore(deps): update plugin com.gradle.common-custom-user-data-gradle-plugin to v1.13
  • chore(deps): update plugin com.gradle.enterprise to v3.17.4
  • chore(deps): update plugin io.micronaut.aot to v4.4.0
  • chore(deps): update plugin io.micronaut.application to v4.4.0
  • chore(deps): update plugin org.gradle.toolchains.foojay-resolver-convention to v0.8.0
  • chore(deps): update redacted.plugin to v1.9.0 (dev.zacsweers.redacted, dev.zacsweers.redacted:redacted-compiler-plugin-gradle)
  • chore(deps): update sigstore to v0.10.0 (dev.sigstore.sign, dev.sigstore:sigstore-gradle-sign-plugin)
  • chore(deps): update slsa-framework/slsa-github-generator action to v1.10.0
  • chore(deps): update sonar to v4.4.1.3373 (org.sonarqube, org.sonarsource.scanner.gradle:sonarqube-gradle-plugin)
  • chore(deps): update step-security/harden-runner action to v2.8.0
  • chore(deps): update versioncheck to v0.51.0 (com.github.ben-manes.versions, com.github.ben-manes:gradle-versions-plugin)
  • chore(deps): update yarn to v3.8.2
  • fix(deps): update atomicfu to v0.24.0 (org.jetbrains.kotlinx:atomicfu-gradle-plugin, org.jetbrains.kotlinx:atomicfu-macosx64, org.jetbrains.kotlinx:atomicfu-linuxx64)
  • fix(deps): update auto.value to v1.11.0 (com.google.auto.value:auto-value, com.google.auto.value:auto-value-annotations)
  • fix(deps): update bouncycastle to v1.78.1 (org.bouncycastle:bcutil-jdk18on, org.bouncycastle:bcpkix-jdk18on, org.bouncycastle:bctls-jdk18on, org.bouncycastle:bcprov-jdk18on)
  • fix(deps): update brotli4j to v1.16.0 (com.aayushatharva.brotli4j:native-windows-x86_64, com.aayushatharva.brotli4j:native-linux-aarch64, com.aayushatharva.brotli4j:native-linux-x86_64, com.aayushatharva.brotli4j:native-osx-aarch64, com.aayushatharva.brotli4j:native-osx-x86_64, com.aayushatharva.brotli4j:brotli4j)
  • fix(deps): update dependency browserslist to v4.23.0
  • fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to v6.25.0
  • fix(deps): update dependency com.fasterxml.jackson.datatype:jackson-datatype-jsr310 to v2.17.1
  • fix(deps): update dependency com.google.api:api-common to v2.32.0
  • fix(deps): update dependency com.google.api:gax to v2.49.0
  • fix(deps): update dependency com.google.auto.factory:auto-factory to v1.1.0
  • fix(deps): update dependency com.google.cloud:libraries-bom to v26.40.0
  • fix(deps): update dependency com.google.crypto.tink:tink to v1.13.0
  • fix(deps): update dependency com.google.errorprone:error_prone_annotations to v2.28.0
  • fix(deps): update dependency com.google.template:soy to v2022-10-26
  • fix(deps): update dependency com.guardsquare:proguard-gradle to v7.5.0
  • fix(deps): update dependency com.jakewharton.mosaic:mosaic-gradle-plugin to v0.12.0
  • fix(deps): update dependency cssnano to v6.1.2
  • fix(deps): update dependency dev.zacsweers.autoservice:auto-service-ksp to v1.1.0
  • fix(deps): update dependency esbuild to v0.21.4
  • fix(deps): update dependency io.dekorate:kubernetes-annotations to v3.7.6
  • fix(deps): update dependency io.github.kawamuray.wasmtime:wasmtime-java to v0.19.0
  • fix(deps): update dependency io.grpc:grpc-kotlin-stub to v1.4.1
  • fix(deps): update dependency io.konform:konform to v0.6.0
  • fix(deps): update dependency io.lettuce:lettuce-core to v6.3.2.release
  • fix(deps): update dependency io.micronaut.platform:micronaut-platform to v4.4.3
  • fix(deps): update dependency io.projectreactor:reactor-core to v3.6.6
  • fix(deps): update dependency jakarta.persistence:jakarta.persistence-api to v3.2.0
  • fix(deps): update dependency micronaut to v4.4.3
  • fix(deps): update dependency org.apache.commons:commons-compress to v1.26.2
  • fix(deps): update dependency org.apache.commons:commons-csv to v1.11.0
  • fix(deps): update dependency org.apache.commons:commons-pool2 to v2.12.0
  • fix(deps): update dependency org.gradle.kotlin:gradle-kotlin-dsl-plugins to v4.4.0
  • fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-datetime to v0.6.0
  • fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-io-core to v0.4.0
  • fix(deps): update dependency org.jetbrains:annotations to v24.1.0
  • fix(deps): update dependency org.jsoup:jsoup to v1.17.2
  • fix(deps): update dependency org.kohsuke:github-api to v1.321
  • fix(deps): update dependency org.openrewrite.recipe:rewrite-recipe-bom to v2.11.1
  • fix(deps): update dependency org.postgresql:postgresql to v42.7.3
  • fix(deps): update dependency org.xerial:sqlite-jdbc to v3.46.0.0
  • fix(deps): update dependency preact to v10.22.0
  • fix(deps): update dependency react to v18.3.1
  • fix(deps): update dependency readable-stream to v4.5.2
  • fix(deps): update dependency web-streams-polyfill to v3.3.3
  • fix(deps): update grpc-java monorepo to v1.64.0 (io.grpc:grpc-protobuf, io.grpc:grpc-netty, io.grpc:grpc-testing, io.grpc:grpc-services, io.grpc:grpc-inprocess, io.grpc:grpc-stub, io.grpc:grpc-core, io.grpc:grpc-bom, io.grpc:grpc-auth, io.grpc:grpc-api)
  • fix(deps): update gson to v2.11.0 (com.google.code.gson:gson-parent, com.google.code.gson:gson)
  • fix(deps): update jackson to v2.17.1 (com.fasterxml.jackson.module:jackson-module-kotlin, com.fasterxml.jackson.module:jackson-module-blackbird, com.fasterxml.jackson.core:jackson-databind, com.fasterxml.jackson.core:jackson-core)
  • fix(deps): update jline to v3.26.1 (org.jline:jline-style, org.jline:jline-reader, org.jline:jline-terminal-jansi, org.jline:jline-terminal, org.jline:jline-console, org.jline:jline-graal, org.jline:jline-builtins, org.jline:jline)
  • fix(deps): update koin to v3.5.6 (io.insert-koin:koin-test-junit5, io.insert-koin:koin-test-junit4, io.insert-koin:koin-test, io.insert-koin:koin-core)
  • fix(deps): update koin.ksp to v1.3.1 (io.insert-koin:koin-ksp-compiler, io.insert-koin:koin-annotations)
  • fix(deps): update kotlin monorepo (org.jetbrains.kotlin:kotlinx-atomicfu-runtime, org.jetbrains.kotlin:kotlin-gradle-plugin, org.jetbrains.kotlinx:kotlinx-metadata-jvm, org.jetbrains.kotlin.kapt, org.jetbrains.kotlin.plugin.atomicfu, org.jetbrains.kotlin.plugin.allopen, org.jetbrains.kotlin.plugin.noarg, org.jetbrains.kotlin.js, org.jetbrains.kotlin:kotlin-serialization, org.jetbrains.kotlin:kotlin-noarg, org.jetbrains.kotlin:kotlin-allopen, org.jetbrains.kotlin:kotlin-sam-with-receiver, org.jetbrains.kotlin.plugin.jpa, org.jetbrains.kotlin.multiplatform, org.jetbrains.kotlin.jvm, org.jetbrains.kotlin:atomicfu, org.jetbrains.kotlin:kotlin-main-kts, org.jetbrains.kotlin:kotlin-scripting-jsr223, org.jetbrains.kotlin:kotlin-scripting-jvm-host, org.jetbrains.kotlin:kotlin-scripting-jvm, org.jetbrains.kotlin:kotlin-scripting-dependencies-maven, org.jetbrains.kotlin:kotlin-scripting-dependencies, org.jetbrains.kotlin:kotlin-scripting-common, org.jetbrains.kotlin:kotlin-compiler-embeddable)
  • fix(deps): update kotlin.compile.testing to v1.6.0 (com.github.tschuchortdev:kotlin-compile-testing-ksp, com.github.tschuchortdev:kotlin-compile-testing)
  • fix(deps): update kotlinx.collections to v0.4-wasm1 (org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm, org.jetbrains.kotlinx:kotlinx-collections-immutable)
  • fix(deps): update kotlinx.coroutines to v1.8.1 (org.jetbrains.kotlinx:kotlinx-coroutines-rx3, org.jetbrains.kotlinx:kotlinx-coroutines-rx2, org.jetbrains.kotlinx:kotlinx-coroutines-reactor, org.jetbrains.kotlinx:kotlinx-coroutines-reactive, org.jetbrains.kotlinx:kotlinx-coroutines-guava, org.jetbrains.kotlinx:kotlinx-coroutines-slf4j, org.jetbrains.kotlinx:kotlinx-coroutines-jdk9, org.jetbrains.kotlinx:kotlinx-coroutines-jdk8, org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm, org.jetbrains.kotlinx:kotlinx-coroutines-core-js, org.jetbrains.kotlinx:kotlinx-coroutines-test, org.jetbrains.kotlinx:kotlinx-coroutines-core)
  • fix(deps): update kotlinx.html to v0.11.0 (org.jetbrains.kotlinx:kotlinx-html-jvm, org.jetbrains.kotlinx:kotlinx-html-js, org.jetbrains.kotlinx:kotlinx-html)
  • fix(deps): update kotlinx.serialization to v1.7.0 (org.jetbrains.kotlinx:kotlinx-serialization-properties-jvm, org.jetbrains.kotlinx:kotlinx-serialization-properties, org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm, org.jetbrains.kotlinx:kotlinx-serialization-protobuf-js, org.jetbrains.kotlinx:kotlinx-serialization-protobuf, org.jetbrains.kotlinx:kotlinx-serialization-json-jvm, org.jetbrains.kotlinx:kotlinx-serialization-json-js, org.jetbrains.kotlinx:kotlinx-serialization-json, org.jetbrains.kotlinx:kotlinx-serialization-core-jvm, org.jetbrains.kotlinx:kotlinx-serialization-core-js, org.jetbrains.kotlinx:kotlinx-serialization-core)
  • fix(deps): update logback to v1.5.6 (ch.qos.logback:logback-classic, ch.qos.logback:logback-core)
  • fix(deps): update openrewrite.lib to v8.27.3 (org.openrewrite:rewrite-java-test, org.openrewrite:rewrite-gradle, org.openrewrite:rewrite-yaml, org.openrewrite:rewrite-json, org.openrewrite:rewrite-protobuf, org.openrewrite:rewrite-properties, org.openrewrite:rewrite-test)
  • fix(deps): update protobuf to v3.25.3 (com.google.protobuf:protobuf-kotlin, com.google.protobuf:protobuf-java-util, com.google.protobuf:protobuf-java)
  • fix(deps): update testcontainers-java monorepo to v1.19.8 (org.testcontainers:gcloud, org.testcontainers:postgresql, org.testcontainers:testcontainers-bom, org.testcontainers:testcontainers, org.testcontainers:junit-jupiter)
  • fix(deps): update truth to v1.4.2 (com.google.truth.extensions:truth-re2j-extension, com.google.truth.extensions:truth-java8-extension, com.google.truth.extensions:truth-proto-extension, com.google.truth:truth)
  • chore(deps): update actions/cache action to v4
  • chore(deps): update actions/checkout action
  • chore(deps): update actions/dependency-review-action action to v4
  • chore(deps): update actions/deploy-pages action to v4
  • chore(deps): update actions/labeler action to v5
  • chore(deps): update actions/setup-java action to v4
  • chore(deps): update actions/setup-node action to v4
  • chore(deps): update actions/upload-pages-artifact action to v3
  • chore(deps): update buildconfig.plugin to v5 (major) (com.github.gmazzo.buildconfig, com.github.gmazzo.buildconfig:plugin)
  • chore(deps): update codecov/codecov-action action to v4
  • chore(deps): update dependency com.github.johnrengelman.shadow to v8
  • chore(deps): update dependency com.github.node-gradle.node to v7
  • chore(deps): update dependency com.gradle.common-custom-user-data-gradle-plugin to v2
  • chore(deps): update dependency com.gradle.plugin-publish to v1
  • chore(deps): update dependency husky to v9
  • chore(deps): update dependency lint-staged to v15
  • chore(deps): update dependency org.jetbrains.kotlin.plugin.dataframe to v1727
  • chore(deps): update dependency org.jetbrains.qodana to v2024
  • chore(deps): update dependency org.jlleitschuh.gradle.ktlint to v12
  • chore(deps): update dependency postcss-cli to v11
  • chore(deps): update dependency prettier-plugin-toml to v2
  • chore(deps): update docker/setup-buildx-action action to v3
  • chore(deps): update github artifact actions to v4 (major) (actions/download-artifact, actions/upload-artifact)
  • chore(deps): update github/codeql-action action to v3
  • chore(deps): update google-github-actions/auth action to v2
  • chore(deps): update google-github-actions/setup-gcloud action to v2
  • chore(deps): update gradle/gradle-build-action action to v3
  • chore(deps): update gradle/wrapper-validation-action action to v3
  • chore(deps): update ksp to v2 (major) (com.google.devtools.ksp, com.google.devtools.ksp:symbol-processing-gradle-plugin, com.google.devtools.ksp:symbol-processing, com.google.devtools.ksp:symbol-processing-api)
  • chore(deps): update mdx monorepo to v3 (major) (@mdx-js/esbuild, @mdx-js/loader, @mdx-js/mdx, @mdx-js/preact, @mdx-js/react)
  • chore(deps): update nexuspublishing to v2 (major) (io.github.gradle-nexus.publish-plugin, io.github.gradle-nexus:publish-plugin)
  • chore(deps): update nodeplugin to v7 (major) (com.github.node-gradle.node, com.github.node-gradle:gradle-node-plugin)
  • chore(deps): update plugin com.gradle.common-custom-user-data-gradle-plugin to v2
  • chore(deps): update slsa-framework/slsa-github-generator action to v2
  • chore(deps): update sonar to v5 (major) (org.sonarqube, org.sonarsource.scanner.gradle:sonarqube-gradle-plugin)
  • chore(deps): update testloggerplugin to v4 (major) (com.adarshr.test-logger, com.adarshr:gradle-test-logger-plugin)
  • chore(deps): update ubuntu docker tag to v24
  • chore(deps): update yarn to v4
  • fix(deps): update dependency com.google.closure-stylesheets:closure-stylesheets to v20160212
  • fix(deps): update dependency com.google.flatbuffers:flatbuffers-java to v24
  • fix(deps): update dependency com.google.guava:guava to v33
  • fix(deps): update dependency com.google.javascript:closure-compiler to v20240317
  • fix(deps): update dependency com.google.template:soy to v2024
  • fix(deps): update dependency com.lmax:disruptor to v4
  • fix(deps): update dependency com.zaxxer:hikaricp to v5
  • fix(deps): update dependency cssnano to v7
  • fix(deps): update dependency io.dekorate:kubernetes-annotations to v4
  • fix(deps): update dependency io.projectreactor:reactor-bom to v2023
  • fix(deps): update dependency jakarta.annotation:jakarta.annotation-api to v3
  • fix(deps): update dependency typescript to v5
  • fix(deps): update dependency web-streams-polyfill to v4
  • fix(deps): update graalvm to v24 (major) (org.graalvm.ruby:ruby-shared, org.graalvm.ruby:ruby-annotations, org.graalvm.ruby:ruby-resources, org.graalvm.ruby:ruby-language, org.graalvm.wasm:wasm-language, org.graalvm.python:python-resources, org.graalvm.python:python-language-enterprise, org.graalvm.python:python-language, org.graalvm.python:python-launcher, org.graalvm.polyglot:lsp, org.graalvm.polyglot:profiler, org.graalvm.polyglot:heap, org.graalvm.polyglot:inspect, org.graalvm.polyglot:insight, org.graalvm.polyglot:dap, org.graalvm.polyglot:coverage, org.graalvm.polyglot:tools, org.graalvm.polyglot:java, org.graalvm.polyglot:llvm, org.graalvm.polyglot:wasm, org.graalvm.polyglot:python, org.graalvm.polyglot:ruby, org.graalvm.polyglot:js-isolate, org.graalvm.polyglot:js, org.graalvm.polyglot:polyglot, org.graalvm.nativeimage:native-image-base, org.graalvm.nativeimage:svm, org.graalvm.tools:lsp_api, org.graalvm.js:js-launcher, org.graalvm.sdk:launcher-common, org.graalvm.espresso:espresso-language, org.graalvm.espresso:hotswap, org.graalvm.espresso:polyglot, org.graalvm.js:js-language, org.graalvm.js:js-isolate, org.graalvm.js:js-scriptengine, org.graalvm.regex:regex, org.graalvm.llvm:llvm-language-managed-resources, org.graalvm.llvm:llvm-language-managed, org.graalvm.llvm:llvm-language-native-enterprise, org.graalvm.llvm:llvm-language-native-resources, org.graalvm.llvm:llvm-language-native, org.graalvm.llvm:llvm-language-nfi, org.graalvm.llvm:llvm-language-enterprise, org.graalvm.llvm:llvm-language, org.graalvm.llvm:llvm-api, org.graalvm.truffle:truffle-nfi-native-darwin-aarch64, org.graalvm.truffle:truffle-nfi-native-darwin-amd64, org.graalvm.truffle:truffle-nfi-native-linux-aarch64, org.graalvm.truffle:truffle-nfi-native-linux-amd64, org.graalvm.truffle:truffle-nfi-libffi, org.graalvm.truffle:truffle-nfi-panama, org.graalvm.truffle:truffle-nfi, org.graalvm.truffle:truffle-dsl-processor, org.graalvm.truffle:truffle-enterprise, org.graalvm.truffle:truffle-api, org.graalvm.shadowed:antlr4, org.graalvm.shadowed:icu4j, org.graalvm.shadowed:jline, org.graalvm.shadowed:json)
  • fix(deps): update hibernate core to v6 (major) (org.hibernate:hibernate-graalvm, org.hibernate:hibernate-hikaricp, org.hibernate:hibernate-core)
  • fix(deps): update kotlin monorepo to v2 (major) (org.jetbrains.kotlin:kotlinx-atomicfu-runtime, org.jetbrains.kotlin:kotlin-gradle-plugin, org.jetbrains.kotlin.kapt, org.jetbrains.kotlin.plugin.atomicfu, org.jetbrains.kotlin.plugin.allopen, org.jetbrains.kotlin.plugin.noarg, org.jetbrains.kotlin.js, org.jetbrains.kotlin:kotlin-serialization, org.jetbrains.kotlin:kotlin-noarg, org.jetbrains.kotlin:kotlin-allopen, org.jetbrains.kotlin:kotlin-sam-with-receiver, org.jetbrains.kotlin.plugin.jpa, org.jetbrains.kotlin.multiplatform, org.jetbrains.kotlin.jvm, org.jetbrains.kotlin:atomicfu, org.jetbrains.kotlin:kotlin-main-kts, org.jetbrains.kotlin:kotlin-scripting-jsr223, org.jetbrains.kotlin:kotlin-scripting-jvm-host, org.jetbrains.kotlin:kotlin-scripting-jvm, org.jetbrains.kotlin:kotlin-scripting-dependencies-maven, org.jetbrains.kotlin:kotlin-scripting-dependencies, org.jetbrains.kotlin:kotlin-scripting-common, org.jetbrains.kotlin:kotlin-compiler-embeddable)
  • fix(deps): update kotlinx: wrappers (major) (org.jetbrains.kotlin-wrappers:kotlin-typescript, org.jetbrains.kotlin-wrappers:kotlin-node)
  • fix(deps): update protobuf to v4 (major) (com.google.protobuf:protobuf-kotlin, com.google.protobuf:protobuf-java-util, com.google.protobuf:protobuf-java)
  • chore(deps): lock file maintenance
  • ๐Ÿ” Create all pending approval PRs at once ๐Ÿ”

Warning

Renovate failed to look up the following dependencies: Failed to look up maven package org.jetbrains.kotlinx:kotlinx-html-wasm, Failed to look up maven package org.graalvm.nativeimage:svm_driver, Failed to look up maven package com.google.auto.factory:auto-factory-annotations, Failed to look up maven package dev.elide.tools:elide-platform, Failed to look up maven package dev.elide:elide-bom-catalog.

Files affected: gradle/elide.versions.toml


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

  • fix(deps): update kotlinx: wrappers (org.jetbrains.kotlin-wrappers:kotlin-typescript, org.jetbrains.kotlin-wrappers:kotlin-web, org.jetbrains.kotlin-wrappers:kotlin-styled, org.jetbrains.kotlin-wrappers:kotlin-mui-icons, org.jetbrains.kotlin-wrappers:kotlin-mui, org.jetbrains.kotlin-wrappers:kotlin-ring-ui, org.jetbrains.kotlin-wrappers:kotlin-remix-run-router, org.jetbrains.kotlin-wrappers:kotlin-react-popper, org.jetbrains.kotlin-wrappers:kotlin-react-redux, org.jetbrains.kotlin-wrappers:kotlin-redux, org.jetbrains.kotlin-wrappers:kotlin-emotion, org.jetbrains.kotlin-wrappers:kotlin-react-router-dom, org.jetbrains.kotlin-wrappers:kotlin-react-beautiful-dnd, org.jetbrains.kotlin-wrappers:kotlin-react-dom, org.jetbrains.kotlin-wrappers:kotlin-react, org.jetbrains.kotlin-wrappers:kotlin-js, org.jetbrains.kotlin-wrappers:kotlin-node, org.jetbrains.kotlin-wrappers:kotlin-css, org.jetbrains.kotlin-wrappers:kotlin-browser, org.jetbrains.kotlin-wrappers:kotlin-wrappers-bom)

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

Note

Detected dependencies section has been truncated

cloudbuild
tools/images/base-alpine/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/base/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/builder/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/codespace/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/gvm17/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/gvm20/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/jdk17/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/jdk20/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/native-alpine/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/native/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/rbe/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
tools/images/runtime-jvm17/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
tools/images/runtime-jvm20/cloudbuild.yaml
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
  • gcr.io/cloud-builders/docker undefined
dockerfile
.devcontainer/Dockerfile
  • ghcr.io/elide-dev/codespace sha256:4ee81688a0be011baeca66129ebd73b14e5fa0c8bb72ae5ac67d8696f413d24d
packages/cli/packaging/Dockerfile
  • us-docker.pkg.dev/elide-fw/tools/builder latest
  • us-docker.pkg.dev/elide-fw/tools/runtime/native sha256:2fe9ff2aa61f325842983181a798ef74a6bc4e6c35bae4d167a5721295ab3efc
site/docs/app/docker/Dockerfile.glibc
  • us-docker.pkg.dev/elide-fw/tools/runtime/native undefined
site/docs/app/docker/Dockerfile.musl
  • us-docker.pkg.dev/elide-fw/tools/runtime/native/alpine undefined
tools/images/base-alpine/Dockerfile
  • alpine 3.18.2@sha256:25fad2a32ad1f6f510e528448ae1ec69a28ef81916a004d3629874104f8a7f70
tools/images/base/Dockerfile
  • ubuntu 22.04@sha256:b060fffe8e1561c9c3e6dea6db487b900100fc26830b9ea2ec966c151ab4c020
tools/images/builder/Dockerfile
  • us-docker.pkg.dev/elide-fw/tools/gvm17 latest@sha256:90f12ce02cac21f3c90850966d4829ed53f4757d8dd20c799e73401dce06dc21
tools/images/codespace/Dockerfile
  • mcr.microsoft.com/vscode/devcontainers/base ubuntu-22.04
tools/images/gvm17/Dockerfile
  • ghcr.io/elide-dev/base latest@sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913
tools/images/gvm20/Dockerfile
  • ghcr.io/elide-dev/base latest@sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913
tools/images/jdk17/Dockerfile
  • ghcr.io/elide-dev/base latest@sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913
tools/images/jdk20/Dockerfile
  • ghcr.io/elide-dev/base latest@sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913
tools/images/native-alpine/Dockerfile
  • ghcr.io/elide-dev/base/alpine sha256:c9f3323d2c363b8c87234a54a5f22810b8f921afbb88c21b20c86ff186972214
tools/images/native/Dockerfile
  • debian bookworm-slim@sha256:050f00e86cc4d928b21de66096126fac52c2ea47885c232932b2e4c00f0c116d
tools/images/rbe/Dockerfile
  • us-docker.pkg.dev/elide-fw/tools/gvm17 latest@sha256:90f12ce02cac21f3c90850966d4829ed53f4757d8dd20c799e73401dce06dc21
tools/images/runtime-jvm17/Dockerfile
  • ghcr.io/elide-dev/base latest@sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913
tools/images/runtime-jvm20/Dockerfile
  • ghcr.io/elide-dev/base latest@sha256:ce2fe9474ca168eebfd35b0c7682db11045b0f10418ec46ae9b0c7610c295913
tools/plugin/gradle-plugin/.devcontainer/Dockerfile
  • us-docker.pkg.dev/elide-fw/tools/codespace latest@sha256:c747a6727ff61e64afada3380bcc6389cd7e38e101a5a94805f270fb49333f9f
github-actions
.github/workflows/bench.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • graalvm/setup-graalvm v1.1.4@0a27862568a8481fbfd3e2ce38c6445e34c0bed4
  • actions/setup-java v3.13.0@0ab4596768b603586c0de567f2430c30f5b0d2b0
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • actions/cache v3@704facf57e6136b1bc63b828d79edcd491f0ee84
  • benchmark-action/github-action-benchmark v1.18.0@70405016b032d44f409e4b1b451c40215cbe2393
.github/workflows/build.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • actions/dependency-review-action v3.1.0@6c5ccdad469c9f8a2996bfecaec55a631a347034
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • slsa-framework/slsa-github-generator v1.9.0
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • elide-tools/action-junit-report v3.1.0@f14b1271fab649beb23e70eae2a258f3ee24a591
  • codecov/codecov-action v3.1.4@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d
  • codecov/codecov-action v3.1.4@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d
  • codecov/codecov-action v3.1.4@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • ilammy/msvc-dev-cmd v1.12.1@cec98b9d092141f74527d0afa6feb2af698cfe89
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • ilammy/msvc-dev-cmd v1.12.1@cec98b9d092141f74527d0afa6feb2af698cfe89
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • actions/upload-artifact v3.1.2@0b7f8abb1508181956e8e162db84b466c27e18ce
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • docker/setup-qemu-action v3.0.0@68827325e0b33c7199eb31dd4e31fbe9023e06e3
  • docker/setup-buildx-action v2.9.1@4c0219f9ac95b02789c1075625400b2acbff50b1
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • google-github-actions/setup-gcloud v1.1.1@e30db14379863a8c79331b04a9969f4c1e225e0b
  • docker/login-action v3.0.0@343f7c4344506bcbf9b4de18042ae17996df046d
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • elide-dev/setup-graalvm 0711c08964f86c1721bebb824b2ac856457e0f55
  • docker/setup-qemu-action v3.0.0@68827325e0b33c7199eb31dd4e31fbe9023e06e3
  • docker/setup-buildx-action v2.9.1@4c0219f9ac95b02789c1075625400b2acbff50b1
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • actions/setup-node v3.8.1@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • google-github-actions/setup-gcloud v1.1.1@e30db14379863a8c79331b04a9969f4c1e225e0b
  • docker/login-action v3.0.0@343f7c4344506bcbf9b4de18042ae17996df046d
  • gradle/gradle-build-action v2.8.1@b5126f31dbc19dd434c3269bf8c28c315e121da2
.github/workflows/codeql.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • github/codeql-action v2.21.5@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8
  • github/codeql-action v2.21.5@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8
.github/workflows/copybara.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v3@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • sgammon/copybara-action 5669453d54072738035b0985cfe322d0ee5de0db
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v3@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • sgammon/copybara-action 5669453d54072738035b0985cfe322d0ee5de0db
.github/workflows/deploy.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • superfly/flyctl-actions 5e0688e3d0586e2cad2288e6c49c3e9bedac39e5
.github/workflows/gradle-wrapper-validation.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v3@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • gradle/wrapper-validation-action v1@56b90f209b02bf6d1deae490e9ef18b21a389cd4
.github/workflows/labeler.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/labeler v4.3.0@ac9175f8a1f3625fd0d4fb234536d26811351594
.github/workflows/model.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • bufbuild/buf-setup-action v1.26.1@eb60cd0de4f14f1f57cf346916b8cd69a9e7ed0b
  • bufbuild/buf-lint-action v1.0.3@bd48f53224baaaf0fc55de9a913e7680ca6dbea4
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • bufbuild/buf-setup-action v1.26.1@eb60cd0de4f14f1f57cf346916b8cd69a9e7ed0b
  • bufbuild/buf-breaking-action v1.1.3@a074e988ee34efcd4927079e79c611f428354c01
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • bufbuild/buf-setup-action v1.26.1@eb60cd0de4f14f1f57cf346916b8cd69a9e7ed0b
  • bufbuild/buf-push-action v1.1.1@1c45f6a21ec277ee4c1fa2772e49b9541ea17f38
.github/workflows/publish.ci.yml
  • step-security/harden-runner v2.5.1@8ca2b8b2ece13480cda6dacd3511b49857a23c09
  • actions/checkout v4.0.0@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • google-github-actions/auth v1.1.1@35b0e87d162680511bf346c299f71c9c5c379033
  • google-github-actions/setup-gcloud v1.1.1@e30db14379863a8c79331b04a9969f4c1e225e0b

  • Check this box to trigger a request for Renovate to run again on this repository

Logging annotations

Ability to generate or redact or suppress logs based on annotations. It would also be great to setup DI/KSP integration for providing loggers to classes.

Managed Assets

It would be really helpful, at the build tool level, and at runtime too, to have a serializable definition for static assets, including their inter-dependencies. This would really help with (1) loading code at runtime (especially via r.js, etc), and (2) saving and restoring build state.

This involves migrating code from earlier versions of Elide, and improving the structure of the asset spec a bit, too.

Plugin does not yet configure JS target outputs

val assetDist by configurations.creating {
  isCanBeConsumed = true
  isCanBeResolved = false
}

artifacts {
  add(assetDist.name, tasks.named("browserDistribution").map { it.outputs.files.files.single() })
}

should be configured automatically by the Gradle plugin

Compiler plugin support

We need to support the concept of a custom Kotlin compiler plugin, applied by our own Gradle plugin.

Compression errors in Chrome

See below:

GET https://localhost:8443/_/assets/753eb23d.css net::ERR_CONTENT_DECODING_FAILED 200

Usually happens under the following conditions:

  1. Loading a dynamic asset
  2. Which is served compressed in some form
  3. And matches a conditional request

SSR engine: Known issues

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

Named links

It would be really useful to be able to assign symbolic names to controllers and page handler methods, so that links can be generated to those methods, and refactoring can occur, without breaking internal consistency.

At the very least, this could be a map held server-side for lookup. If we wanted to get fancy, consuming the app manifest from the frontend would also be neat.

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: Failed to decrypt field password. Please re-encrypt and try again.

Feature: Tooling

It would be great to have a CLI tool which could help with debugging, app maintenance/lifecycle tasks, locally running apps, and so on. These are just some initial thoughts.

Cool feature ideas:

  • Scaffold a project
  • Run with hotswap+HMR
  • Update configurations
  • VM REPL
  • Environment check
  • Jail for Gradle
  • gRPC control server
  • RPC querying / introspection

How it should work:

This is a good chance to demonstrate GraalVM and Kotlin/Native in action. Distributing a native binary is a pain, though.

  • Should use Kotlin/Native & GVM
  • Should use Cosmopolitan
  • Kotter or similar for UI
  • Wrapper pattern maybe

Where we should distribute it:

  • Brew
  • apt
  • NPM

Framework website

Every good framework has a site built with itself. We should do that, after the SSG compiler is working.

URL rewriting breaks SSG

When rewriting asset URLs for embedded assets, SSG referential integrity is broken; this may result in duplicated static files or other annoying conditions.

Secret support

It would be great to have native built-in support for secret value resolution.

Ability to build static sites (SSG mode)

We should add the ability to build Elide apps into static SSG-based sites. In this mode, requests are executed through @Page-annotated handlers at build time; their local assets are crawled, and the entire resulting set of web assets is considered the output.

This mode would enable Elide to be used as a framework for sites hosted on completely static systems, like Github Pages or Google Cloud Storage/S3.

To do this the right way, we'll need to scan for @Page annotations at build time; two options exist for this, namely, kapt and KSP. Because kapt is deprecated, we should build a KSP processor which produces the appropriate metadata for the SSG compiler.

Rough steps to finish this one:

  • Add KSP processor which scans for @Page-annotated handlers and produces an "app manifest," in binary-encoded proto, that describes each of the detected "endpoints."

  • Read manifest at build time from the Gradle plugin, when SSG is active, and use it as input to perform the following steps for each listed endpoint, if any (if no endpoints are present, this step is skipped, and an SSG build is not possible):

    • Synthesize a root-page request to the endpoint, save the output
    • Synthesize a request to each mounted asset endpoint, save the output
    • With above outputs, generate a virtual filesystem with index.html / assets
  • Write output to filesystem in a structure which mirrors the app

    • For each endpoint, write a folder or index.html or <page>.html
    • For each endpoint, write each asset
  • *Compress to tarball which can be uploaded / expanded to hosting systems

    • Best to use a tar.gz probably

Enhancement Grab-bag

Easy stuff to add which would be useful to consume in a framework.

  • JUL to SLF4J bridging
  • ktor module
  • Nashorn support?
  • OData add-on
  • Jackson configurations
  • Model layer enhancements
    • Kotlin serialization
    • JPA/JDBC

HotSwap support

Basic HotSwap and live reload support are now possible because of the latest config injection changes.

Additionally, if an app is running under Espresso, we should load logic to handle VM restart.

Tracking: Alpha 4 Release

Tracking ticket for follow-up to the initial release.

  • Early major functionality, pt 2
  • Basic stuff
    • Presets for Micronaut config
    • Error handlers
  • Dev Experience
    • Published narrative docs
    • Small website
    • Benchmarks (continuous)

Performance enhancements

The following performance enhancements are imagined or planned (modulo testing to validate):

  • Concurrent JS execution. Currently, the JS VM operates in a single thread. We should make it multi-threaded with proper synchronization a-la this sample. Done right, this could easily double/triple JS execution throughput.

  • PGO (Profile Guided Optimization). PGO can close the gap between native binary peak performance and JVM warmed-JIT peak performance. Ideally this could be rolled into the Gradle plugin based on an app's testsuite (along with agent instrumentation for reflection). Oracle reports this as the most impactful performance option for GraalVM native apps.

  • Hermetic inputs. By fully understanding inputs to SSR executions, and controlling the surrounding environment, it may be possible to do intelligent things with caching and streaming.

  • Streamed responses. Currently, HTML content is buffered before being sent to the invoking client; this is particularly true of the JS VM. If responses were fully streamed, the browser would receive resources earlier, and would therefore be able to begin downloading resources earlier, improving perceived performance. This would also lay the ground-work for techniques like those adopted by Turbo (i.e. WebSocket-based streaming of HTML).

  • Fully-static images. By creating smaller Docker images which function in a completely standalone fashion (i.e. FROM scratch), maybe the resulting apps use less memory and are therefore lighter/faster at runtime. Remains to be seen.

Multiplatform target support

For now, Elide uses Kotlin Multiplatform, but doesn't support multiplatform targets when using the plugin. This is an inconsistency which will inevitably bite users in a painful way; if they setup a project to be multiplatform with the expectation that they can use Elide, they will have to refactor into a multi-module build.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.