promotional bannermobile promotional banner

LeanCore

LeanCore keeps Hytale server RAM under control: idle map areas cool off, view distance trims when heap is tight, chunks unload when nobody needs them, and retention weights learn from player activity.

File Details

LeanCore-1.4.0.jar

  • R
  • Jun 10, 2026
  • 224.73 KB
  • 25
  • 0.5

File Name

LeanCore-1.4.0.jar

Supported Versions

  • 0.5

Changelog (1.4.0)

Added

  • Learning snapshot v7 (learning.state.gz): gzip binary format replaces unbounded text learning.state; automatic migration on first flush
  • Player profile pruning: learningMaxPersistedPlayers (default 512) and learningPlayerTtlDays (default 90) cap disk growth on long-running servers
  • embeddedStandardProfile: solo embedded hosts can run STANDARD (15s tick) without forcing dedicatedServerMode / FULL 5s megatick. Safer local dogfood.
  • World-thread dispatch layer: WorldDispatch, GovernorWorldContext, RuntimeGuard for safe governor work on Hytale's TickingThread worlds
  • Optional GC hint (gcHintEnabled): experimental LITE idle System.gc() nudge (off by default)

Changed

  • Governor runtime uses a daemon LeanCore-runtime scheduler (no longer pins HytaleServer.SCHEDULED_EXECUTOR)
  • FULL/STANDARD governor ticks: coalesced world.execute (at most one pending tick; scheduler no longer blocks up to 5s per tick)
  • Policy apply and chunk unload run inline when already on the world thread (world.isInThread())
  • ShutdownEvent triggers early runtime.shutdown(); HUD overlays removed on shutdown
  • Webhook HttpClient bound to a daemon executor thread

Fixed

  • Zombie java.exe after closing Hytale when using dedicated-style config (dedicatedServerMode + govern + unload + HUD on embedded host): nested world.execute + CompletableFuture.get from the world thread queued tasks that never drained before JVM exit; world TickingThread kept the process alive after Shutdown completed!
  • View-radius on embedded solo still skipped unless dedicatedServerMode: true (intentional rule preserved)

Notes

  • Solo local default remains profile LITE unless embeddedStandardProfile: true
  • Enable unloadEnabled only after /leancore probe baseline on dedicated hosts