Skip to content

AMDphreak/evolution-engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The core engine for the Evolution Adaptation Ecosystem. This tool provides a powerful, version-aware D-based engine for migrating source code between library and framework versions using SDL-based rulesets.

Ecosystem

Features

  • Shortest Path Migration: Automatically find the optimal set of rules to migrate from version A to version B.

  • Git Rulesets: Dynamic retrieval of rulesets directly from Git repositories.

  • SDL Based: Human-readable and flexible rules using sdlang-d.

  • Cross Platform: Available on Windows, macOS, and Linux.

Installation

Homebrew (macOS/Linux)

brew tap AMDphreak/homebrew-tap
brew install evolution-engine

Winget (Windows)

winget install AMDphreak.EvolutionEngine

Usage

Basic Migration

To migrate a project from version 5.15 to 6.0 using local rules:

evolution-engine --path ./src --rules-dir ./rules/qt --from 5.15 --to 6.0

Remote Ruleset (Cloud Rules)

You can directly use a remote rules repository. The engine will clone the repo, find the necessary rules recursively, and clean up automatically.

evolution-engine --rules-repo https://github.com/AMDphreak/evolution-rules-code --from 5.15 --to 6.0 --path ./src

CLI Options

Option Description

--path, -p

Path to the project or file to process.

--rules-dir, -R

Local directory containing .sdl rulesets.

--rules-repo

Git URL of a remote rules repository.

--rules-repo-branch

Branch to use for the remote repository (default: main).

--from, -f

Source version (e.g., 1.0).

--to, -t

Target version (e.g., 2.0).

--extensions, -e

Comma-separated list of file extensions (default: .py,.cpp,.h).

--dry-run, -d

Perform a dry run without modifying files.

Contributing Rules

New rules should be added to the appropriate rules/<type>/<lang>/<library>/ subdirectory in the respective rules repository.

Rules Repository Workflow

To ensure rules are easily consumable by the Evolution Engine in CI environments, each rules repository should implement a Release Workflow. This workflow packages the rules/ directory into versioned archives (.zip and .tar.gz) for ingestion by the engine.

Example Release Workflow (.github/workflows/release.yml)
name: Release
on:
  push:
    tags: ['v*']
permissions:
  contents: write
jobs:
  package:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Create Archives
        run: |
          mkdir -p dist
          tar -czf dist/repo-name-${{ github.ref_name }}.tar.gz rules/
          zip -r dist/repo-name-${{ github.ref_name }}.zip rules/
      - uses: actions/upload-artifact@v4
        with:
          name: rules-archives
          path: dist/*
  release:
    needs: package
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: rules-archives
      - uses: softprops/action-gh-release@v2
        with:
          files: |
            *.tar.gz
            *.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Changelog

Detailed history of changes is available in CHANGELOG.md.

License

MIT License. Copyright (c) 2026 AMDphreak.

About

High-performance, D-based transformation engine for modular codebase adaptation and version evolution.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors