Releases: cashapp/zipline
1.5.1
- Fix: remove the Zipline version from the
klib
metadata in thezipline-cinterop-quickjs
artifact. This restores the behavior from 1.4.0 to work around [KT-62515].
1.5.0
- New:
Zipline.eventListener
can be used to get theEventListener
from aZipline
instance. - Upgrade: Kotlin 1.9.20
1.4.0
-
New:
EventListener.Factory
can be used to scope events to a particularZipline
instance. -
New: Support arbitrary metadata in the
ZiplineManifest
. This newMap<String, String>
can be
produced in yourbuild.gradle.kts
file, and consumed from theZiplineManifest
instance.zipline { ... metadata.put("build_timestamp", "2023-10-25T12:00:00T") }
-
Upgrade: OkHttp 4.12.0
-
Upgrade: Okio 3.6.0
1.3.0
- 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/NativeEcdsaP256
signature verifier. - Upgrade: [Kotlin Serialization 1.6.0][kotlin_serialization_1_6_0].
1.2.0
- Upgrade: Kotlin 1.9.0
- Upgrade: kotlinx.coroutines 1.7.3
1.1.0
- New: Gradle tasks
ziplineApiCheck
andziplineApiDump
. 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].
1.0.0
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 aClassCastException
at runtime.
0.9.20
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.)
0.9.19
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 renamedZiplineFunction.name
tosignature
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
fromapp.cash.zipline.loader
toapp.cash.zipline
. It was
also promoted to the mainzipline
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].
0.9.17
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
ajs(...)
literal.