IceIce
Home
  • Getting Started

    • Quick Start
    • Core Concepts
    • Architecture
  • SDK Guide

    • Java SDK
    • Go SDK
    • Python SDK
  • Reference

    • Node Types
    • Roam API
    • Server Config
    • Client Config
Playground
FAQ
  • Changelog
  • Upgrade Guide
Sponsor
Community
GitHub
  • English
  • 简体中文
Home
  • Getting Started

    • Quick Start
    • Core Concepts
    • Architecture
  • SDK Guide

    • Java SDK
    • Go SDK
    • Python SDK
  • Reference

    • Node Types
    • Roam API
    • Server Config
    • Client Config
Playground
FAQ
  • Changelog
  • Upgrade Guide
Sponsor
Community
GitHub
  • English
  • 简体中文

Ice Rule Engine Changelog

Recording feature updates, performance optimizations and bug fixes for each version of Ice rule engine

3.0.2 (2026-03)

Ice Rule Engine 3.0.2 - Client Address Optimization & Starter Removal

🔧 Optimization

  • Client Address Simplified: Address format shortened from IP/app/xxxxxxxxxxx to IP_xxxxx
  • IP Detection Unified: Java/Python/Go SDK unified to use network interface iteration for non-loopback IPv4

📦 Starter Removed

  • Removed ice-spring-boot-starter-2x and ice-spring-boot-starter-3x: Use ice-core directly for all Java projects
  • Spring Integration: For Spring/SpringBoot projects, use IceBeanUtils.setFactory() to enable bean injection

3.0.1 (2026-03)

Ice Rule Engine 3.0.1 - Server Optimization

🔧 Optimization

  • Server Code Restructured: Reorganized server code into sub-packages for better maintainability
  • Folder Operations: Added folder operation support
  • Dirty Checking: Added dirty checking mechanism with unsaved changes prompt
  • UI Optimization: Multiple interface interaction and display improvements

3.0.0 (2026-03) 🚀

Ice Rule Engine 3.0.0 - Server Rewritten in Go

🎯 Core Changes

Server completely rewritten from Java (Spring Boot) to Go. Single binary deployment, no JDK required.

🔧 Server Rewrite

  • ✅ Go Rewrite: Server rewritten in Go for better performance and simpler deployment
  • ✅ Single Binary: Frontend embedded via Go embed, no additional web server needed
  • ✅ Multi-platform Binaries: Pre-built binaries for Linux/macOS/Windows (amd64/arm64)
  • ✅ Docker Image Unchanged: waitmoon/ice-server:3.0.0, fully compatible

📦 SDK Version Bump

  • Java SDK: 3.0.0 (no functional changes, version bump only)
  • Go SDK: v1.1.0
  • Python SDK: 3.0.0

⚠️ Upgrade Notes

  • No SDK Code Changes: Version bump only, drop-in replacement
  • Server Deployment Change: Manual deployment now uses Go binary instead of jar, with multi-platform downloads
  • Docker Users: No changes needed, same image name and usage
  • Full Data Compatibility: File storage format unchanged, no data migration needed

📋 Version Info

ComponentVersion
Java SDK3.0.0
Go SDKv1.1.0
Python SDK3.0.0
ice-server3.0.0

2.1.3 (2026-03)

Ice Rule Engine 2.1.3 - Forward Node Display Enhancement

🎨 Enhancement

  • Forward node visual improvement: Forward nodes now use purple (#722ed1) with ◀ arrow prefix, clearly distinguished from editing nodes (orange dashed border)
  • Color scheme optimization: Unified node status colors — forward nodes purple, editing nodes orange dashed, unregistered nodes gray

2.1.2 (2026-03)

Ice Rule Engine 2.1.2 - node-meta API optimization

🔧 Optimization

  • Reduce redundant data: Remove classes field from ClientInfo, no longer returns full registered class names for each client when switching lanes/addresses

2.1.0 (2026-03)

Ice Rule Engine 2.1.0 - Editor UX and Node Metadata Enhancements

✨ New Features

  • Node metadata: new node-meta API for trunk/lane/client discovery and leaf class metadata
  • Editing experience: more accurate change detection (A→B→A treated as no-op) and clearer unregistered-node styling
  • Batch utilities: batch export and base creation improvements

🐞 Fixes

  • Fix lane _latest.json accidental deletion

2.0.6 (2026-03) 🏊

Ice Rule Engine 2.0.6 - Swimlane Support

✨ New Features

🏊 Swimlane Isolation

Clients can now register under a swimlane. Different swimlanes have isolated node info, preventing node metadata conflicts across development branches.

Client configuration:

ice:
  app: 1
  storage:
    path: ./ice-data
  lane: feature-xxx  # Swimlane name, omit for main trunk

Directory structure:

clients/{app}/              ← Main trunk clients (unchanged)
clients/{app}/lane/{name}/  ← Swimlane clients (new)

Server UI: A swimlane selector in the detail page toolbar lets you view leaf nodes from the main trunk or a specific swimlane (merged, swimlane overrides main trunk).

All SDKs: Java, Go, and Python SDKs all support the swimlane parameter.

🔧 Improvements

  • 🔍 Node search fix - Fixed leaf node search not working in the dropdown
  • 🧹 Auto-cleanup - Empty swimlane directories are automatically removed when all clients expire

📋 Version Info

ComponentVersion
Java SDK2.0.6
Go SDKv1.0.6
Python SDK2.0.6
ice-server2.0.6

2.0.1 (2025-12) ✨

Ice Rule Engine 2.0.1 - Multi-language SDK Official Release

🌐 Multi-language SDK

This version officially releases Go and Python SDKs with full feature parity to Java SDK:

# Go
go get github.com/zjn-zjn/ice/sdks/go

# Python
pip install ice-rules

✨ New Features

📝 Field Description Enhancement

All three languages support field descriptions for friendly UI display:

LanguageMethodExample
Java@IceField annotation@IceField(name="Score", desc="Threshold") double score;
Goice struct tagScore float64 \ice:"name:Score,desc:Threshold"``
PythonAnnotated + IceFieldscore: Annotated[float, IceField(name="Score")]

🏷️ Leaf Node Alias

Support multi-language compatible configuration with class name mapping:

// Java
@IceNode(alias = {"score_flow"})
public class ScoreFlow extends BaseLeafRoamFlow { }
// Go
ice.RegisterLeaf("com.example.ScoreFlow",
    &ice.LeafMeta{Alias: []string{"score_flow"}},
    func() any { return &ScoreFlow{} })
# Python
@ice.leaf("com.example.ScoreFlow", alias=["score_flow"])
class ScoreFlow: ...

🚫 Field Ignore

Fields that should not be configurable can be ignored:

LanguageMethod
Java@IceIgnore
Gojson:"-" or ice:"-"
Python_ prefix or Annotated[..., IceIgnore()]

🔧 Optimizations

  • 📦 Monorepo Project Structure: Unified management of Java/Go/Python SDKs
  • ⚡ Hot-reload Optimization: More stable incremental updates
  • 🐛 Bug Fixes: Fixed multiple edge cases

📋 Version Info

ComponentVersion
Java SDK2.0.1
Go SDKv1.0.3
Python SDK2.0.1
ice-server2.0.1

2.0.0 (2025-12) 🚀

Ice Rule Engine 2.0 Major Architecture Upgrade - Zero Dependencies, Containerized, Lighter

🎯 Core Changes

Version 2.0.0 brings a revolutionary architecture overhaul to Ice, removing dependencies on MySQL database and NIO communication in favor of a fully file-system-based storage solution with native Docker containerization support.

💾 Storage Architecture Revolution

  • ✨ File System Storage: Removed MySQL dependency, using local file system to store all configuration data
  • 📁 JSON File Format: All configurations stored as JSON files for easy version control and manual review
  • 🔄 Incremental Version Updates: Support for incremental configuration updates, clients poll version files for latest configurations
  • 🗂️ Clear Directory Structure:
    • apps/ - Application configurations
    • {app}/bases/ - Base rule configurations
    • {app}/confs/ - Conf node configurations
    • {app}/versions/ - Version incremental update files
    • clients/ - Client registration information

🔗 Communication Architecture Simplification

  • 🚫 Removed NIO Communication: No longer requires Server-Client NIO long connections
  • 🚫 Removed ZooKeeper HA: No longer depends on ZooKeeper for high availability
  • 📡 File Polling Sync: Clients poll file system for configuration updates
  • 💓 Heartbeat Mechanism: Clients periodically write heartbeat files, Server can detect client status

🐳 Native Docker Support

  • 📦 Official Docker Image: waitmoon/ice-server:2.0.0
  • 🏗️ Multi-Architecture Support: Supports linux/amd64 and linux/arm64
  • 📝 Docker Compose: Provides ready-to-use docker-compose.yml
  • 🔧 Environment Variable Configuration: Supports flexible configuration via environment variables
  • ♻️ CI/CD Integration: GitHub Actions auto-build and publish images

📋 Detailed Changes

Configuration Changes

  • Removed spring.datasource database configuration
  • Removed ice.port NIO port configuration
  • Removed ice.ha high availability configuration
  • Added ice.storage.path file storage path configuration
  • Added ice.client-timeout client timeout configuration
  • Added ice.version-retention version file retention count configuration
  • Client added ice.poll-interval polling interval configuration
  • Client added ice.heartbeat-interval heartbeat interval configuration

⚠️ Upgrade Notes

  1. Data Migration: Upgrading from 1.x requires manually exporting MySQL configuration data to JSON files
  2. Configuration Update: Need to update application.yml, remove database config, add file storage config
  3. Dependency Changes: Can remove MySQL driver and MyBatis related dependencies
  4. Deployment Method: Docker deployment recommended for simplified operations

🚀 Quick Start

Docker One-Click Deployment:

docker run -d --name ice-server \
  -p 8121:8121 \
  -v ./ice-data:/app/ice-data \
  waitmoon/ice-server:2.0.0

Using Docker Compose:

docker-compose up -d

1.5.0 (2025-02-20) 🎉

Major Ice rule engine version update

Features

  • ✨ Brand new visual tree structure for more intuitive rule orchestration
  • 🚀 Support for SpringBoot 3.x and JDK 17+
  • 📦 Starter split into 2x/3x versions for different SpringBoot versions

1.3.1 (2023-06-02)

Features

  • Add node recycling functionality
  • #17 Compatible with spring-boot-devtools

1.3.0 (2023-06-02)

Features

  • Various improvements and fixes

1.2.0 (2023-04-10)

Features

  • New configuration interface: New configuration page supporting configuration descriptions, drag-and-drop node orchestration, etc. (close #16)

1.1.0 (2022-07-30)

Features

  • ice-server high availability: Default support for using ZooKeeper for ice-server high availability (close #13)

1.0.4 (2022-07-30)

Features

  • Client offline optimization: Optimize client offline processing logic (close #12)

1.0.3 (2022-07-26)

Features

  • none node support: Add none-type nodes (close #11)
  • forward nodes: Support forward nodes (close #9)

1.0.2 (2022-02-13)

Features

  • Node inversion: Nodes support inversion (close #6)

1.0.1 (2022-01-29)

Features

  • ice-server: NIO communication between ice-server and ice-client for better performance (close #3)
Edit this page on GitHub
Last Updated: 3/20/26, 1:36 AM
Contributors: waitmoon, Claude, Claude Opus 4.6