zipline

Run Kotlin/JS libraries in Kotlin/JVM and Kotlin/Native programs

APACHE-2.0 License

Stars
1.9K

Bot releases are visible (Hide)

zipline - 1.12.0 Latest Release

Published by github-actions[bot] 4 months ago

  • Fix: Don't allocate a stack trace when canceling a coroutine or a job. We've observed that
    applications create many instances of CancellationException, such as when canceling a flow
    in routine business logic. Unfortunately, we've also seen that creating the stack traces for
    these exceptions is slow on Kotlin/Native. With this update Zipline reuses a single instance of
    CancellationException everywhere. We believe that losing the diagnostic information is worth
    the performance benefit.
  • Fix: Don't break the configuration cache. Zipline's compile task violated a Gradle requirement
    by reading another task's property before that task had completed.
  • New: ZiplineFunction.asDynamicFunction() short-circuits Kotlin Serialization in Kotlin/JS. This
    new mechanism allows performance-sensitive code to reduce the amount of work required to call
    bridged functions.
  • Upgrade: [Kotlin Serialization 1.7.0][kotlin_serialization_1_7_0].
zipline - 1.11.0

Published by github-actions[bot] 5 months ago

  • New: apiTracking property on the zipline { } Gradle extension allows disabling API generation.
  • Fix: Calling Zipline.close() will now call ZiplineService.close() on all bound services. Strong
    references to the services will also be cleared to prevent reference cycles on native.
  • Upgrade: [Kotlin 2.0.0][kotlin_2_0_0]]
zipline - 1.10.0

Published by github-actions[bot] 6 months ago

  • Fix: Clean source paths that show up in stack traces.
  • Fix: Don't leak Zipline instances. We had a bug where our memory-leak detection itself introduced
    a memory leak. We held a reference to a Zipline instance that was intended to be used to report
    services that were garbage collected but not closed.
zipline - 1.9.0

Published by github-actions[bot] 6 months ago

  • Breaking: Reorder the parameters in ZiplineLoader so FileSystem always precedes Path.
  • Fix: Release unused services in Zipline.close(). This was a memory leak.
  • Fix: Don't break Gradle's configuration cache in the ziplineApiDump task.
  • New: ZiplineCryptography adds a SecureRandom API for guest code.
  • New: Zipline.getOrPutAttachment() lets you attach application data to a Zipline instance.
  • New: Support building Zipline with the new Kotlin K2 compiler.
  • Upgrade: [Kotlin 1.9.23][kotlin_1_9_23]
  • Upgrade: [kotlinx.coroutines 1.8.0][kotlinx_coroutines_1_8_0]
  • Upgrade: [Okio 3.9.0][okio_3_9_0]
  • Upgrade: [SQLDelight 2.0.2][sqldelight_2_0_2]
zipline - 1.7.0

Published by github-actions[bot] 11 months ago

  • New: Gradle APIs to optimize production builds for either small artifact size or developer
    experience. Call the appropriate functions in the zipline {} block of your build file:
    zipline {
      ...
      optimizeForSmallArtifactSize()
    }
    
  • Fix: Don't crash when very large Long values are sent over a bridged API. Zipline uses JSON to
    encode values shared between host and guest, and that converts all primitive numeric types to
    Double. It is necessary to add @Contextual to all serialized Long values to get this fix.
zipline - 1.6.0

Published by github-actions[bot] 11 months ago

  • Upgrade: [SQLDelight 2.0.0][sqldelight_2_0_0]
zipline - 1.5.1

Published by github-actions[bot] 11 months ago

  • Fix: remove the Zipline version from the klib metadata in the zipline-cinterop-quickjs
    artifact. This restores the behavior from 1.4.0 to work around [KT-62515].
zipline - 1.5.0

Published by github-actions[bot] 12 months ago

  • New: Zipline.eventListener can be used to get the EventListener from a Zipline instance.
  • Upgrade: Kotlin 1.9.20
zipline - 1.4.0

Published by github-actions[bot] 12 months ago

  • New: EventListener.Factory can be used to scope events to a particular Zipline instance.

  • New: Support arbitrary metadata in the ZiplineManifest. This new Map<String, String> can be
    produced in your build.gradle.kts file, and consumed from the ZiplineManifest instance.

    zipline {
      ...
      metadata.put("build_timestamp", "2023-10-25T12:00:00T")
    }
    
  • Upgrade: OkHttp 4.12.0

  • Upgrade: Okio 3.6.0

zipline - 1.3.0

Published by github-actions[bot] about 1 year ago

  • Fix: Configure a 6 MiB stack size by default. Previously Zipline didn't enforce any stack
    size limit, which resulted in difficult-to-diagnose crashes when the stack size was exceeded.
    Callers must manually ensure their calling stack sizes are larger than 6 MiB!
  • Fix: Always include type parameters for nested parameterized types.
  • Fix: Don't double-free when calling NSData.dataWithBytesNoCopy. We had a bug where we were
    double-freeing memory in the Kotlin/Native EcdsaP256 signature verifier.
  • Upgrade: [Kotlin Serialization 1.6.0][kotlin_serialization_1_6_0].
zipline - 1.2.0

Published by github-actions[bot] about 1 year ago

zipline - 1.1.0

Published by github-actions[bot] over 1 year ago

  • New: Gradle tasks ziplineApiCheck and ziplineApiDump. These tasks work like Kotlin’s
    Binary compatibility validator:
    the Dump task writes your public API to a file (api/zipline-api.toml) and the the Check
    task confirms that your public API matches that file. These two tasks expose the IDs Zipline uses
    for functions. The :ziplineApiCheck task configures itself a dependency of Gradle's :check
    task: you'll need to run :ziplineApiDump when applying this update and each time your public
    API changes going forward.
  • Upgrade: [Kotlin 1.8.21][kotlin_1_8_21].
  • Upgrade: [kotlinx.coroutines 1.7.2][kotlinx_coroutines_1_7_2].
  • Upgrade: [Kotlin Serialization 1.5.1][kotlin_serialization_1_5_1].
zipline - 1.0.0

Published by github-actions[bot] over 1 year ago

This is Zipline's initial stable release.

With this release we commit to compatibility between host and guest programs. In particular, host
applications built with any Zipline 1.x release will be able to execute guest applications built
with any other 1.y release. (Application developers must write compatible interfaces to take
advantage of this!)

The following are now stable:

  • The manifest file format (manifest.zipline.json)
  • The library file format and bytecode within (my-library.zipline)
  • The host-guest call protocol
  • The internal host-guest APIs for async calls, console logging, and leak notifications

As we add features and performance improvements to future releases, we will test compatibility
with 1.0.

We expect to someday do ‘Zipline 2.0’ that uses WebAssembly. When that happens we’ll make sure the
2.x tools can also produce programs that run on 1.x hosts.

  • Fix: Don't allow services with the different generic parameters to collide in the cache. We had
    a severe bug where two services would share serializers for unrelated types. This would typically
    result in a ClassCastException at runtime.
zipline - 0.9.20

Published by github-actions[bot] over 1 year ago

We've changed this project to focus exclusively on executing Kotlin/JS libraries.

We plan to drop support for executing arbitrary JavaScript code. If you've been using either
QuickJS Java (this project's name until September 2021) or Duktape Android (this project's name
until June 2021), those projects remain as git branches but will not receive further updates.

The project's new Maven coordinates are app.cash.zipline:zipline.

  • Downgrade: [Kotlin 1.8.20][kotlin_1_8_20]. (Our users aren't ready for 1.8.21 yet.)
  • Downgrade: [Kotlin Serialization 1.5.0][kotlin_serialization_1_5_1]. (Requires Kotlin 1.8.21.)
zipline - 0.9.19

Published by github-actions[bot] over 1 year ago

We've changed this project to focus exclusively on executing Kotlin/JS libraries.

We plan to drop support for executing arbitrary JavaScript code. If you've been using either
QuickJS Java (this project's name until September 2021) or Duktape Android (this project's name
until June 2021), those projects remain as git branches but will not receive further updates.

The project's new Maven coordinates are app.cash.zipline:zipline.

  • Breaking: Change the calling convention between host and guest code to identify functions by IDs
    instead of by their signatures. We renamed ZiplineFunction.name to signature and added a new
    id property.
  • Breaking: Change the built-in services to share a single identifier rather than bridging them
    separately based on feature (console, event_loop, event_listener.)
  • Breaking: Move ZiplineManifest from app.cash.zipline.loader to app.cash.zipline. It was
    also promoted to the main zipline artifact.
  • New: ZiplineService.targetType can be used to inspect the function declarations on the peer's
    version of a service.
  • New: EventListener.manifestVerified() signals successful signature checks of the manifest.
  • New: Convert zipline-profiler into a multiplatform artifact.
  • Upgrade: [Kotlin 1.8.21][kotlin_1_8_21].
  • Upgrade: [kotlinx.coroutines 1.7.1][kotlinx_coroutines_1_7_1].
  • Upgrade: [Kotlin Serialization 1.5.1][kotlin_serialization_1_5_1].
zipline - 0.9.17

Published by github-actions[bot] over 1 year ago

We've changed this project to focus exclusively on executing Kotlin/JS libraries.

We plan to drop support for executing arbitrary JavaScript code. If you've been using either
QuickJS Java (this project's name until September 2021) or Duktape Android (this project's name
until June 2021), those projects remain as git branches but will not receive further updates.

The project's new Maven coordinates are app.cash.zipline:zipline.

  • Upgrade: [Kotlin 1.8.10][kotlin_1_8_10].
  • Upgrade: [Kotlin Serialization 1.5.0][kotlin_serialization_1_5_0].
  • Fix: Support function overloads in ZiplineService interfaces.
  • Fix: Workaround a crash in Kotlin/JS incremental compilation. We were using a constant string in
    a js(...) literal.
zipline - 0.9.16

Published by github-actions[bot] over 1 year ago

We've changed this project to focus exclusively on executing Kotlin/JS libraries.

We plan to drop support for executing arbitrary JavaScript code. If you've been using either
QuickJS Java (this project's name until September 2021) or Duktape Android (this project's name
until June 2021), those projects remain as git branches but will not receive further updates.

The project's new Maven coordinates are app.cash.zipline:zipline.

  • New withDevelopmentServerPush() subscribes to the local development server's websocket to
    trigger hot reloads. This is lower-latency and more efficient than polling.
  • Upgrade: [Kotlin 1.8.0][kotlin_1_8_0].
zipline - 0.9.15

Published by github-actions[bot] over 1 year ago

We've changed this project to focus exclusively on executing Kotlin/JS libraries.

We plan to drop support for executing arbitrary JavaScript code. If you've been using either
QuickJS Java (this project's name until September 2021) or Duktape Android (this project's name
until June 2021), those projects remain as git branches but will not receive further updates.

The project's new Maven coordinates are app.cash.zipline:zipline.

  • Fix: Don't crash if canceled with a 0-delay job enqueued. We had a bug where calling
    Zipline.close() could race with an enqueued job.
  • Fix: Don't crash in the JS CoroutineEventLoop. This replaces an IllegalStateException with a
    CancellationException when making a suspending call after the Zipline is closed.
  • Fix: Do not set -Xir-per-module. This is no longer necessary, and may have prevented
    whole-program module generation.
  • New: Support Webpack builds. In addition to modular builds that emit many .zipline files per
    program, webpack builds emit a single minified .zipline file. (In both cases a single manifest
    file is used.)
  • New: We've added event listener events for the loader's initializer and main function.
zipline - 0.9.14

Published by github-actions[bot] almost 2 years ago

We've changed this project to focus exclusively on executing Kotlin/JS libraries.

We plan to drop support for executing arbitrary JavaScript code. If you've been using either
QuickJS Java (this project's name until September 2021) or Duktape Android (this project's name
until June 2021), those projects remain as git branches but will not receive further updates.

The project's new Maven coordinates are app.cash.zipline:zipline.

  • Fix: Don’t force suspend functions to suspend. We've changed our calling convention so
    suspendable functions are executed inline and on the same call stack until they suspend. If such
    functions return without suspending, the async dispatch is skipped.
  • Fix: Provide more information when calling a closed service.
  • Fix: Clean up file names in stack traces.
  • New: Add a ZiplineManifest to LoadResult.Success.
zipline - 0.9.13

Published by github-actions[bot] almost 2 years ago

We've changed this project to focus exclusively on executing Kotlin/JS libraries.

We plan to drop support for executing arbitrary JavaScript code. If you've been using either
QuickJS Java (this project's name until September 2021) or Duktape Android (this project's name
until June 2021), those projects remain as git branches but will not receive further updates.

The project's new Maven coordinates are app.cash.zipline:zipline.

  • New: ZiplineScope is a new mechanism to close pass-by-reference services and flows. Pass a
    ZiplineScope to Zipline.take() or implement ZiplineScoped in a ZiplineService to declare
    a scope, then call ZiplineScope.close() to close all received services. Note that Flows
    that were passed-by-reference previously needed to be collected exactly once; with this change
    Flows may be collected any number of times.
  • New: Configure the development HTTP server's local port in Gradle:
    zipline {
      ...
      httpServerPort.set(22364)
    }
    
  • New: Include the service name in ZiplineApiMismatchException.
  • Fix: Prevent .zipline files from being stored in the HTTP cache. We've added
    'Cache-Control: no-store' request headers to downloads to prevent caching that's redundant
    with ZiplineLoader's cache.
  • Fix: Make ZiplineService.close() idempotent for outbound services.
Package Rankings
Top 15.56% on Repo1.maven.org