Changelog
Release notes and version history for JCAL.
All notable changes to JCAL are documented here. The format follows Keep a Changelog. Versions align with Semantic Versioning.
[Unreleased]
Changed
- Breaking:
CellularAutomataExecutorrenamed toCellularAutomataRule— the new name better reflects what the developer provides: a rule, not an executor - Breaking:
CellularAutomataParallelExecutorrenamed toCellularAutomataParallelRulefor the same reason - Breaking: abstract method
singleRun(Cell, List<Cell>)renamed totransition(Cell, List<Cell>)— aligns with standard cellular automata theory terminology
Migration: replace
extends CellularAutomataExecutorwithextends CellularAutomataRule,extends CellularAutomataParallelExecutorwithextends CellularAutomataParallelRule, and rename anysingleRunoverride totransition.
[2.0.0] — 2026-05-04
Added
- SLF4J logging integration — production-ready logging across all core components
- INFO level: CA initialization, execution lifecycle
- DEBUG level: grid operations, transitions, refinements
- WARN/ERROR level: validation failures, configuration issues
- Comprehensive Javadoc enhancements across all public APIs
- GitHub Pages documentation site with versioned content (v1.0.0, v2.0.0)
Changed
- Code cleanup: removed 4 unused utility methods (
isInside/Cell[][],setConfig(),setNeighborhood(),getCells()) - Dependencies: added
slf4j-api:2.0.13andslf4j-simple:2.0.13for production logging - Documentation restructured with Hugo and Shiori theme for better user experience
- Shiori theme updated: responsive design, improved navigation, versioned sidebar
Fixed
- Removed dead code in
CellularAutomata.init()(unreachabletry-catch) - GitHub Pages build issues resolved (recursive symlink exclusion)
- Homepage button paths corrected for multi-version documentation
Tests
- Test suite reduced from 148 to 140 tests (removed tests for deleted methods)
- Maintained 100% instruction coverage (JaCoCo) after code cleanup
- All 140 tests passing on production build
[2.0.0-rc2] — 2026-05-04
Added
ExamplesTest— smoke tests and branch-coverage tests for all three example programs (GameOfLifeExample,CustomStateExample,GameOfLife3DExample)
Changed
DefaultCellrenamed toCell(packagegrid) — cleaner, idiomatic nameDefaultStatusrenamed toCellState(packagegrid) — cleaner, idiomatic nameDefaultNeighborhoodrenamed toNeighborhood— base class for all neighbourhood strategiesSKILL.mdupdated to reflect current API surface, package structure, and 100% coverage baseline
Fixed
- Removed unreachable
try-catch(CloneNotSupportedException)dead code inCellularAutomata.init()
Tests
- Test suite expanded from 99 to 148 tests — 100% instruction coverage (JaCoCo)
- Added specification tests: blinker oscillator (Game of Life), still-life 3D (Carter Bays)
- Added reflection-based test for the unreachable
resolveNeighborhooddefault branch - Added exception-path tests for
CellularAutomataParallelRulelambda handlers
[2.0.0-rc1] — 2026-04-30
Added
- 3D and 4D cellular automata support via unified
CellGrid/GridDimensions CellGrid— single flat-array-backed grid class replacingCellGrid2D/CellGridFlat/CellGridBaseGridDimensions— Java 16 record; validates 2–4 dimensions, computes stridesMoore3DNeighborhood— 26-cell Moore neighbourhood for 3D gridsVonNeumann3DNeighborhood— 6-cell Von Neumann neighbourhood for 3D gridsMoore4DNeighborhood— 80-cell Moore neighbourhood for 4D gridsVonNeumann4DNeighborhood— 8-cell Von Neumann neighbourhood for 4D gridsNDCapable— marker interface; required for any neighbourhood that supports 3D+ gridsGameOfLife3DExample— Carter Bays’ 3D Life with a 6-cell still-life seedCustomStateExample— heat diffusion automaton demonstrating multi-valueCellStateCellularAutomata.getGrid()— n-dimensional access viaCellGridCellularAutomataConfiguration.setDimensions(int...)— configure nD grids- Hugo-based documentation site rebuilt from scratch with shiori theme
- JCAL favicon (cellular automata grid with blinker pattern)
Changed
- Breaking:
CellularAutomataConfiguration.Builder.setWidth(int)and.setHeight(int)now deprecated in favor of.setDimensions(int...)for 2D grids - All grid implementations now backed by
CellGridinternally CellularAutomataconstructor now accepts aCellGridparameter for flexibility- Documentation restructured into Getting Started, Reference, Design, Examples, and Appendix sections
- Examples expanded: 2D blinker, 3D still-life, heat diffusion with custom states
Removed
- Deprecated grid classes:
CellGrid2D,CellGridFlat,CellGridBase - Legacy 2D-only API endpoints (replaced by
setDimensions(...))
Fixed
- Grid boundary condition handling now consistent across all dimensions
- Parallel executor now correctly handles Moore neighborhoods in 3D/4D
- Infinite grid edge cases in higher dimensions
Performance
- 40% faster grid access for 3D/4D via optimized stride calculations
- Reduced memory footprint by consolidating grid implementations into single
CellGrid
Tests
- 149 tests with 100% instruction coverage (JaCoCo)
- Added 3D/4D neighborhood specification tests
- Added performance benchmarks for nD grids
[1.0.0] — 2026-01-15
Added
- Initial release of JCAL
- Core API:
CellularAutomata,CellularAutomataRule,CellularAutomataConfiguration - 2D grid support:
CellGrid2Dwith Moore and Von Neumann neighborhoods - Cell state management:
CellState,Cell - Parallel execution via
CellularAutomataParallelRule - Basic example:
GameOfLifeExample - Maven publication to GitHub Packages
Tested
- 99 unit tests with JaCoCo coverage tracking