- Restrict Part role parsing to type=building relations only; multipolygon
relations now always render their Outer members normally (osm_parser.rs)
- Suppress outline ways only for type=building relations with actual Part
members, not for multipolygon building relations (data_processing.rs)
- Match the same type=building guard in generate_building_from_relation
so multipolygon outlines are no longer incorrectly skipped (buildings.rs)
- Normalize polygon winding order in flood fill to fix undefined
geo::Contains results that caused empty building interiors (floodfill.rs)
set_block now removes any leftover per-index properties, matching
the behaviour of set_block_with_properties and preventing stale
NBT data from leaking into serialization or blocking compaction.
- to_section() Uniform fast path now gated on self.properties.is_empty()
so per-index properties are never silently dropped
- Remove compact_sections() eprintln! that polluted stderr in normal operation
- Reword set_block_if_absent_absolute doc to clarify it checks the
in-memory overlay, not the on-disk world
- Change 'three cases' to 'two cases' in BlockStorage doc comment
(only Uniform and Full variants exist)
- Clear stale properties via properties.remove(&idx) in
set_block_if_absent() and fill_column() after writing a block,
so leftover NBT metadata from a previous block does not persist
- Replace inline [Block; 4096] section arrays with BlockStorage enum:
Uniform(Block) for homogeneous sections (1 byte vs 4 KiB),
Full(Vec<Block>) for mixed sections (heap-allocated, small inline footprint).
Saves ~200-500 MB for typical worlds.
- Call compact_sections() before save to collapse Full sections that
became uniform (e.g. all-STONE from --fillground) back to Uniform.
- Replace HashSet<(i32,i32)> in flood fill with FloodBitmap (1 bit per coord).
~400x memory reduction: e.g. 48 MB -> 122 KB for 1000x1000 polygon.
- Add set_block_if_absent() to avoid double HashMap traversal in
ground generation (get_block + set_block -> single pass).
- Add fill_column() for efficient underground fill: resolves region/chunk
once per column instead of per Y-level (~6x fewer HashMap lookups).
- Wire optimized methods into ground generation loop in data_processing.rs.
- Replace deprecated gen::<T>() calls with random::<T>() in deterministic_rng tests
- Suppress dead_code warnings for bedrock-only fields with conditional compilation
- Note: bedrockrs dependencies currently pull jsonwebtoken 9.3.1 transitively
- This will be resolved when bedrockrs updates their jsonwebtoken dependency
- Direct dependency on jsonwebtoken 10.3.0 is in place for non-bedrock code paths
- Replace deprecated gen::<T>() calls with random::<T>() in deterministic_rng tests
- Disable bedrock feature by default to prevent transitive jsonwebtoken 9.3.1 dependency
- This ensures jsonwebtoken CVE-2026-25537 fix is complete (no version downgrade via bedrock deps)
- Users can still enable bedrock feature with: cargo build --release --features bedrock
- Upgrade jsonwebtoken from 9.3.1 to 10.3.0 (fixes CVE-2026-25537 Type Confusion vulnerability allowing authorization bypass)
- Upgrade rand from 0.8.5 to 0.9.1 with updated API calls
- Upgrade rand_chacha to 0.9 for compatibility with rand 0.9
- Upgrade clap to 4.5.53
- Upgrade windows to 0.62.0
- Update all rand API usages: gen() -> random(), gen_range() -> random_range(), gen_bool() -> random_bool()
- Update trait imports to use IndexedRandom and SliceRandom as needed
- Enable std and std_rng features for rand