Skip to content

Bump io.github.charlietap.chasm:chasm from 1.4.8 to 1.7.0 - #166

Closed
dependabot[bot] wants to merge 1 commit into
developfrom
dependabot/gradle/io.github.charlietap.chasm-chasm-1.7.0
Closed

dependabot[bot] wants to merge 1 commit into
developfrom
dependabot/gradle/io.github.charlietap.chasm-chasm-1.7.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 25, 2026

Copy link
Copy Markdown
Contributor

Bumps io.github.charlietap.chasm:chasm from 1.4.8 to 1.7.0.

Release notes

Sourced from io.github.charlietap.chasm:chasm's releases.

1.7.0

Whats Changed

GC 2.0

Chasms original solution to Wasms GC proposal was more of a simulation of a garbage collector than the real thing, it could trace roots and collect and functionally it was fine, but it performance wasn't great.

This has been replaced with a synchronous, frankly still simple, non moving mark and sweep heap. There's no generations or nurseries or anything like that but the system is robust and it does its job very well. High level it stores ordinary objects in pages backed by primitive arrays, records which fields contain references, and reuses reclaimed slots and pages. GC instructions now allocate and access values directly through this heap without creating temporary Kotlin objects or payload arrays.

Against Chasm 1.6.1, four-field struct allocation improved from 7.263 ns to 4.076 ns, while 32-field allocation improved from 14.892 ns to 6.318 ns. Random field reads improved from 1.734 ns to 0.591 ns and writes from 1.758 ns to 0.685 ns.

The previous representation allocated 72 bytes per four-field struct and 296 bytes per 32-field struct. The new ordinary allocation path is effectively allocation-free after warmup.

Collecting 100,000 unreachable objects improved from 1.099 ms to 0.096 ms. Collecting 100,000 live objects improved from 3.467 ms to 0.752 ms.

For workloads that include GC instructions you should expect to see a small performance bump, if the workload is long running or memory intensive enough to trigger collection you should expect a much larger performance bump. Bare in mind the GCThreshold in Chasms config is set to 8MB by default and most workloads I've seen fall short of this and therefore never trigger collection, which is really where the performance gains are to be had.

1.6.1

Whats Changed

Gradle plugin 2.2.0

Chasm 1.6.1 ships alongside version 2.2.0-1.6.1 of the Gradle plugin:

plugins {
    id("io.github.charlietap.chasm.gradle") version "2.2.0-1.6.1"
}

A better embedding api for memory writes

Historically the writeBytes function took this form:

fun writeBytes(
    store: Store,
    memory: Memory,
    pointer: Int,
    bytes: ByteArray,
): ChasmResult<Unit, ChasmError.ExecutionError> =

This has drawbacks as callers may want to use the same buffer for writes of different sizes. To address this we've introduced a new api which largely has the same ergonomics but with the option to specify a buffer pointer and the amount of bytesToWrite.

fun writeBytes(
    store: Store,
    memory: Memory,
    pointer: Int,
</tr></table> 

... (truncated)

Commits
  • 3a8af42 release: prepare for release 1.7.0
  • 39da78f corpus: establish baseline for new GC implementation
  • c31c71a abi: fix newline issue in API
  • 0ce50c4 gc: introduce real garbage collector and rework existing gc instructions to l...
  • 1506324 embedding: prevent use of imports from another store during instantiation
  • 392820e embedding: prevent use of dropInstance with an incorrect store
  • bb24438 release: prepare version 1.6.1
  • cac065a plugin: configure suspending factories per module
  • 680e303 plugin: verify codegen with golden files
  • f45a1bb plugin: share generated function input buffers
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [io.github.charlietap.chasm:chasm](https://github.com/CharlieTap/chasm) from 1.4.8 to 1.7.0.
- [Release notes](https://github.com/CharlieTap/chasm/releases)
- [Commits](CharlieTap/chasm@1.4.8...1.7.0)

---
updated-dependencies:
- dependency-name: io.github.charlietap.chasm:chasm
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file java Pull requests that update java code labels Aug 25, 2026
@dependabot @github

dependabot Bot commented on behalf of github Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #172.

@dependabot dependabot Bot closed this Sep 21, 2026
@dependabot
dependabot Bot deleted the dependabot/gradle/io.github.charlietap.chasm-chasm-1.7.0 branch September 21, 2026 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants