Repository navigation
Conversation
iyi 0.21.0 spells a parallel task spawn(unit: :new) and removed
spawn_parallel, and it refuses raw memory and trust marks in a module
not marked @[Unsafe("why")] above its module header, which 0.20.x
refuses. db, db/pooling and db/testing/dummy_driver are marked for the
types they hold Share on trust, db/core for the pool a Database leaves
uninitialized while it builds it. The tests read a string's bytes with
Bytes.of.
This was referenced Nov 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
iyi 0.21.0 changes two things iyi-db depends on:
spawn_parallelis gone. A parallel task isg.spawn(unit: :new)(SPEC.md III.4.16/18), which 0.20.x refuses.Shareon trust (@[Share],@[Share(owns: true)],uninitialized), must say so with one@[Unsafe("why")]above itsmoduleheader (SPEC.md III.13). 0.20.x refuses that mark. 0.21.0 also adds the safe callsBytes.of,String#byte_atandString.new(Array(UInt8)).On 0.21.0, master is refused in
db.iyi(@[Share]onSharedBuilder),db/core.iyi(uninitialized Pool(Connection)),db/pooling.iyi(Pool,PoolSlot),db/testing/dummy_driver.iyi(Made), and indb/mapping_test.iyianddb/serializable_test.iyi(text.to_unsafe).db/parallel_test.iyiandmanual/pool_concurrency.iyidon't build (spawn_parallel).This PR:
db,db/core,db/poolinganddb/testing/dummy_driver, each with its reason: the builder, pool and slot, and test double heldShareon trust, and the pool aDatabaseleaves uninitialized while it builds it. No code changes in them.Bytes.of, so they stay checked.spawn_parallelcalls indb/parallel_test.iyiandmanual/pool_concurrency.iyibecomespawn(unit: :new)(whatiyi fixwrites). The prose in the README,db/core,db/pooling, the dummy driver and the manual program uses the new spelling too.IYI_VERSION, README Requirements, and a CHANGELOGUnreleasedentry.Since 0.20.x can't build this, the release that carries it is a minor bump. iyilang/pg's 0.21.0 update requires it as v0.5.0. Tagging is up to you.
Tests (iyi 0.21.0 release binary, Linux x86_64, 12 vCPU)
The
iyi-0.21.0-linux-x86_64.tar.gzfrom the v0.21.0 release, checked againstSHA256SUMS. The steps are CI's:iyi test db: 16 passed, 0 failed.db/*_test.iyibuilt with--emit-iyimod, rebuilt with--use-iyimod, and the rebuilt binary run. All 16 pass.manual/load.iyiandmanual/pool_concurrency.iyibuild.iyi fmt --check db.iyi db manualpasses.The macOS leg of the matrix wasn't run locally.