
Ferrite
Ferrite — A Rust-powered Minecraft mod improving chunk generation performance, with 7× faster terrain compute proven on equivalent workloads. Low-end hardware testing needed to ship the full optimization.
Оцените первым
6.2K
35
Список изменений
[0.6.6-alpha] - 2026-07-13
Fixed
- Five latent redstone defects found in a full review of the AC port. An exception mid-cascade left stale graph state that poisoned every later cascade in that world; removed wires reached the Rust BFS kernel as phantom power-15 sources through a sign-truncation bug (this path is default-on); an out-of-range power value could abort the whole JVM via a release-mode panic across the JNI boundary (now hard-clamped on both sides); the parity oracle produced guaranteed false positives on experimental-redstone worlds (now skipped); and a single exception permanently disabled the oracle and phase counters through stuck thread-locals (they self-heal every tick now). None of these changed measured performance; all validators stay bit-exact.
Changed
- AC redstone lag machine restesting The
vanilla path held 1.4-1.8 TPS (up to 716 ms per tick); enabling
/ferrite redstone ac onmid-choke recovered to a flat 20.00 TPS in about 40 seconds, ~13x fewer cascades and ~6x cheaper gate updates on the same build. README benchmark section carries the numbers. - Chunkforce predicts flight direction. With
/ferrite chunkforce on, the force-gen ring center now leads a moving player by up to 12 chunks along their velocity instead of spending half the budget on terrain behind them. Flight test on 26.1.2 (view distance 16, simulation distance 12): 24,581 chunks forced in ~2.5 minutes at ~160 chunks/s with TPS 20.00 held; the generation front stays out of sight at top creative-fly speed. Stationary players keep the old radial behavior. - Pregen inflight cap raised 50 to 200 (+25% throughput). Four
3721-chunk virgin-terrain runs measured cap 50 at 90-96 chunks/s and
cap 200 at 114-118 chunks/s; 400 added nothing. Tunable at runtime
with
/ferrite pregen inflight <n>. - Walkability cache: fill strategy fixed, then shelved after A/B.
Session 5's pre-fill box thrashed the 512-slot cache (hit rate 1-17%,
~4400 snapshots per 5 s). Session 6 replaced it with a lazy snapshot on
first miss, restricted to sections the PathNavigationRegion actually
backs, and grew the kind cache to 2-way set-associative (2048 sets x 2
ways, LRU). That fixed the cache itself: hit rate 71-94%, snapshots
24-57 per 5 s. An A/B with 294 chasing zombies then hit 84-87% and
still moved nav tick cost at most ~5%, inside noise, because vanilla already
fronts
getPathTypeFromStatewith a per-positionPathTypeCacheand our intercept only ever serves vanilla's misses. Shelved: code stays in tree, default off, post-mortem in JOURNEY. Opt in with-Dferrite.nav.cache=true, or-Pferrite.navCache=true/-Pferrite.navParity=trueon runClient.
Added
[chunk-save]monitor. TimesSerializableChunkData.copyOf(server thread) andwrite(background encode) separately, one line per 5 s window when saves happened. First measurements settled the chunk-save port candidate: the palette bit-pack already runs on the background executor in 26.1.x, and the tick thread pays only 0.3-0.5 ms/tick of copyOf under sustained flight. Candidate closed; monitor stays.
Fixed
- Workspace is clippy-clean. All ~120 warnings cleared across the four
crates:
bind!codegen now emitsFromimpls without the Copy.clone(), the api layer'sIntoimpls flipped toFrom, slice params replace&Vec, and dead verbatim-port items carry explicit allows. Style lints that fight the vanilla ports (index loops, negated float comparisons that keep vanilla NaN semantics, JNI argument counts) are allowed at crate level in rust-mod with a justification comment. Workspace resolver pinned to 2; the macros crate declaresproc-macro = trueinstead ofcrate-type. - Unsafe JNI buffer helpers hardened.
get_i32_slice_mut(surface_jni.rs) andget_byte_slice_mut(redstone_queues_jni.rs) returned&mut [_]from a shared&JByteBuffer, so nothing stopped a caller from holding two aliased mutable slices over one direct buffer. Never a live bug (each is called once per JNI call), but the invariant was unwritten. Both are nowunsafe fnwith a# Safetycontract (no-alias, capacity, alignment) and SAFETY notes at each call site. The twoclippy::mut_from_referrors are gone, and build.yml now runs clippy on the linux job so deny-level lints fail CI.
Файлы
ferrite-0.6.6-alpha+26.1.2.jar(2.43 MiB)
ОсновнойМетаданные
Канал релиза
Alpha
Номер версии
0.6.6-alpha+26.1.2
Загрузчики
Fabric
Версии игры
26.1.1–26.1.2
Загрузок
1.4K
Дата публикации
13.07.2026
