Ice Rule Engine Changelog

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

2.0.1open in new window (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.1
Python SDK2.0.1
ice-server2.0.1

2.0.0open in new window (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.0open in new window (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.1open in new window (2023-06-02)

Features

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

1.3.0open in new window (2023-06-02)

Features

  • Various improvements and fixes

1.2.0open in new window (2023-04-10)

Features

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

1.1.0open in new window (2022-07-30)

Features

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

1.0.4open in new window (2022-07-30)

Features

1.0.3open in new window (2022-07-26)

Features

1.0.2open in new window (2022-02-13)

Features

1.0.1 (2022-01-29)

Features

  • ice-server: NIO communication between ice-server and ice-client for better performance (close #3open in new window)