Skip to content

Releases: niklas-heer/kipferl

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 13:36
751950d

Kipferl 0.6 is the first stable Rust release: a new name, a maintainable core,
and smaller standalone apps without giving up the Python-style developer
experience.

✨ What’s new

  • Rename μcharm/ucharm to Kipferl, with kipferl.dev as the public home
  • Move the CLI, loader, PocketPy host, and native modules from Zig to stable Rust
  • Add profile-based tree shaking with no Rust compiler or linker required
  • Add kipferl dev with native file watching, debouncing, and terminal restoration
  • Back interactive prompts with Ratatui and a scrollback-preserving inline viewport
  • Add documented JSON, YAML, TOML, KDL, XML, CSV, and INI/CFG workflows
  • Ship HTTPS, SQLite, archives, crypto, filesystem, process, and 50+ runtime modules

⚡ Smaller standalone apps

Kipferl analyzes imports and chooses a prebuilt runtime profile conservatively.
On the measured Apple Silicon baseline, a minimal app is 1,450,837 bytes,
down from 4,817,925 bytes with the full runtime—a 69.9% reduction. The
core app starts in 7.679 ms median and 8.433 ms p95.

Use kipferl build app.py -o app for the default tree-shaken build. Add
--full-runtime when imports are generated dynamically or when you want every
optional capability explicitly.

✅ Compatibility and distribution

  • Pass 1,669/1,669 available compatibility checks
  • Build and smoke-test macOS ARM64, macOS x86_64, Linux ARM64, and Linux x86_64
  • Ship static musl Linux binaries with no dynamic libc dependency
  • Publish SHA-256 checksums beside every release asset
  • Keep legacy from ucharm ..., environment variables, download aliases, and
    the ucharm command as a deprecated 0.6 transition path

Installation

brew install niklas-heer/tap/kipferl
# Existing Kipferl installation:
brew upgrade kipferl
# Existing μcharm 0.5 installation:
brew uninstall --force ucharm
brew install niklas-heer/tap/kipferl

Direct downloads and adjacent checksum files are available from the
v0.6.0 release.

Read the documentation, the
Kipferl 0.6 release story, the
Rust migration retrospective, and
the tree-shaking deep dive.


Full changelog: v0.5.0...v0.6.0

v0.6.0-rc.2

v0.6.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Aug 10:46
0cd329b

Kipferl v0.6.0-rc.2

Kipferl’s second Rust release candidate adds the fast local development loop we
wanted in place before stable.

What’s new

  • Add kipferl dev <script.py> with native filesystem events and debounced
    restart behavior.
  • Watch Python, config, and template files recursively while ignoring generated
    paths and common application output that could create restart loops.
  • Support repeatable --watch <path>, --clear, and --debounce <ms> options.
  • Keep watching after the script exits and recover from atomic-save gaps.
  • Restore terminal settings and cursor state between interactive Ratatui
    restarts.
  • Establish kipferl.dev as the canonical website and
    documentation home.

Verification

  • 1,669/1,669 targeted compatibility checks pass.
  • 19/19 supported vision checks pass.
  • All four release targets build and smoke-test a standalone application.
  • Linux binaries are static musl executables.
  • Compatibility and PocketPy patch-verification evidence are attached.

Installation

This is a prerelease. Download the matching CLI and adjacent .sha256 file:

  • kipferl-macos-aarch64 — macOS Apple Silicon
  • kipferl-macos-x86_64 — macOS Intel
  • kipferl-linux-aarch64 — Linux ARM64, static musl
  • kipferl-linux-x86_64 — Linux x86_64, static musl

Temporary ucharm-* compatibility assets remain available for existing
automation during the v0.6 transition.

Full changelog: v0.6.0-rc.1...v0.6.0-rc.2

v0.6.0-rc.1

v0.6.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Aug 22:56
6d9f0a5

μcharm v0.6.0-rc.1

This is the first public release candidate of μcharm’s Rust runtime, CLI, and universal loader. It is intended for migration testing before the Rust build becomes the next stable release.

What changed

  • Replaced the production Zig host, CLI, loader, and native module surface with Rust.
  • Adopted Ratatui and Crossterm for responsive interactive selection while preserving deterministic non-interactive output.
  • Renamed the presentation namespace to the neutral public tui module.
  • Added Rust-native HTTPS, SQLite, archive, filesystem, process, regex, time-zone, and tooling support.
  • Kept standalone distribution: the Linux artifacts are statically linked and require no system libc or musl runtime.
  • Hardened PocketPy FFI ownership, terminal restoration, subprocess draining, loader extraction, archive limits, and database cleanup.

Validation

  • 1,669 / 1,669 targeted compatibility cases passing.
  • Quality, PocketPy FFI sanitizer, and compatibility jobs passing.
  • Native builds and universal-application smoke tests passing on:
    • macOS Apple Silicon
    • macOS Intel
    • Linux ARM64 musl
    • Linux x86_64 musl
  • Published artifacts include SHA-256 checksum files.

Measured baseline

  • Native Apple Silicon startup: 7.044 ms median / 7.980 ms p95 over 1,200 runs.
  • Runtime sizes in this release: 3,984,368 to 4,767,472 bytes.
  • CLI sizes in this release: 4,796,384 to 5,796,416 bytes.
  • The release keeps every runtime below the 5 MB guardrail and every CLI below the 6 MB guardrail.

Installation and testing

This RC does not replace the stable Homebrew formula. Download the binary for your platform from the assets below, verify it with the adjacent .sha256 file, make it executable, and run:

./ucharm-macos-aarch64 --version
./ucharm-macos-aarch64 run app.py
./ucharm-macos-aarch64 build app.py -o app

Please report release-candidate findings on migration issue #13.

Full changelog: v0.5.0...v0.6.0-rc.1

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 21 Dec 03:50

μcharm 0.5.0

Beautiful tables, spinners, and a brand new home for your CLI toolkit.

✨ What's New

  • Add charm.table() for rendering beautiful Unicode tables with multiple border styles and header support
  • Add charm.spinner() with animated frames, custom messages, and color support
  • Add charm.progress_done() helper to elegantly complete progress bars and spinners
  • Enhance charm.progress() with elapsed time display
  • Launch documentation website with interactive Terminal component, getting-started guides, and full module reference
  • Add vision roadmap featuring planned features inspired by Rich, Inquirer, and BubbleTea

⚡ Improvements

  • Expand input module with test mode support for prompt() and password() functions via MCHARM_TEST_KEYS environment variable
  • All 28 end-to-end tests now pass with improved test infrastructure
  • Update embedded runtime binaries across all platforms with BearSSL (TLS), sqlite3, and new module support

📚 Documentation

  • New Fumadocs-powered website with landing page, module documentation, and guides
  • Add comprehensive AI templates for common CLI patterns
  • Update type stubs with new charm functions for better IDE support
  • Improve contribution guidelines with website deployment checklist

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

What's next? Check out the roadmap for fuzzy select, task lists, and more interactive components coming soon.


Full Changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 21 Dec 02:16

μcharm 0.4.0

Network requests and templating just got a whole lot easier—plus 10 new stdlib modules to round out your toolkit.

✨ What's New

  • Add fetch module for HTTP/HTTPS requests with built-in TLS support via BearSSL
    • get(), post(), request() functions with intuitive APIs
    • Built-in CA certificate bundle; set verify=False for development
  • Add template module with Jinja-like syntax for dynamic content generation
    • Variables: {{name}}, dotted access {{user.email}}
    • Conditionals: {% if condition %}...{% end %}
    • Loops: {% for item in items %}...{% end %}
  • Expand stdlib with sqlite3, zipfile, tarfile, gzip, xml.etree.ElementTree, dataclasses, hmac, toml, tempfile improvements, and subprocess enhancements

⚡ Improvements

  • sqlite3 now supports full DB-API subset with cursor objects and fetchall()
  • zipfile and tarfile add read-only archive support for common workflows
  • xml.etree.ElementTree gains fromstring(), find(), and findall() for XML parsing
  • dataclasses module now includes field(), asdict(), and astuple() helpers
  • subprocess.run() improved with capture_output parameter for easier output handling
  • toml module supports nested table parsing with loads() and dumps()

📚 Documentation

  • Updated README with fetch and template examples
  • Expanded AI instruction templates with 50+ module reference
  • Full compatibility report: 1,663/1,663 tests passing

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Dec 20:13

μcharm 0.3.0

100% Python stdlib compatibility—now with cross-platform builds and 18 new modules.

✨ What's New

  • Add 18 new CPython-compatible stdlib modules: array, binascii, configparser, contextlib, copy, dataclasses, hmac, secrets, urllib.parse, uuid, and more
  • Add cross-compilation support with --target flag: build for Linux ARM64, x86_64, and macOS from any platform
  • Add multi-platform runtime builds: pre-built PocketPy binaries for macOS (aarch64, x86_64) and Linux (x86_64, aarch64)
  • Add SHA256 verification for downloaded runtime artifacts with automatic fallback to local builds
  • Enhance collections module with Counter, ChainMap, UserDict, and UserList
  • Enhance functools module with singledispatch, cmp_to_key, and wraps decorator
  • Enhance json module with JSONDecoder and JSONEncoder classes supporting custom hooks
  • Enhance struct module with calcsize() and improved format string parsing
  • Add patchset management for PocketPy vendor patches with CI verification

⚡ Improvements

  • Runtime caching in ~/.ucharm/runtimes/ with automatic version tracking
  • Smarter build system: falls back to local PocketPy compilation when in source checkout
  • Better error messages and user prompts for missing dependencies
  • CI now verifies PocketPy patches aren't accidentally corrupted or removed

🐛 Bug Fixes

  • Fix progress() function signature to include label parameter
  • Fix float formatting for small values in PocketPy runtime
  • Correct release artifact hashing from repository root

📚 Documentation

  • Update compatibility stats: 100% of targeted modules now pass all tests (1,606/1,600 tests)
  • Add cross-compilation examples and WIP modules section
  • Expand PocketPy patch documentation with management instructions
  • Convert FAQ to collapsible sections for easier navigation

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

What's next? We're working on TLS support for http.client, full sqlite3 bindings, and streaming compression. Check the roadmap for details.


Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Dec 03:13

μcharm 0.2.0

Interactive input just got rock solid—arrow keys, vim bindings, and task runners all work seamlessly now.

✨ What's New

  • Add shared TUI library with ANSI constants, Unicode symbols, and reusable UI components
  • Introduce test mode for automated testing of interactive prompts via environment variables or file descriptors
  • New ucharm init command initializes projects with type stubs and AI assistant instructions
  • Add ucharm new --stubs and --ai flags for scaffolding with IDE support and coding assistant templates

⚡ Improvements

  • Interactive input now works with task runners like just and make by reading directly from /dev/tty
  • Escape sequences for arrow keys and vim bindings (j, k) handled properly without false quits
  • Cross-compilation support with --target flag for macOS (aarch64/x86_64) and Linux (x86_64/aarch64)
  • Auto-download platform-specific runtimes with version awareness and user prompts
  • 24 native modules with full type stubs for IDE autocomplete and type checking
  • Position-independent code enabled on Linux for PIE compatibility
  • Unified ANSI styling across CLI and native modules eliminates duplication

🐛 Bug Fixes

  • Fix box width calculation with unsigned integer underflow when no title provided
  • Correct ANSI escape codes in all help text and subcommands with proper \x1b prefix
  • Add _XOPEN_SOURCE for strptime() Linux compatibility
  • Add _POSIX_C_SOURCE and sys/types.h for signal/terminal functions on Linux
  • Fix terminal inheritance in ucharm run using execv for proper interactive input
  • Code-sign MicroPython binary on macOS for terminal interaction
  • Prevent continuous redraws in select/multiselect when no key pressed
  • Update CI to use macos-15-intel runners (macos-13 retired)

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 18 Dec 09:44

Features

  • Add os module with environ, path utilities, and system info
  • Add sys module with recursion limits, sizeof, and flags
  • Add argparse subparsers and mutually_exclusive_group support
  • Upgrade to Zig 0.15.2 for improved performance

Improvements

  • Improve CPython compatibility to 88.2% (1,288/1,461 tests passing)
  • Achieve 100% compatibility for 28 modules including os, collections, argparse
  • Add OrderedDict.move_to_end(), deque.clear(), deque.rotate() methods
  • Add namedtuple._replace() and namedtuple._fields support
  • Fix argparse choices, required, and nargs='?' const handling
  • Patch MicroPython module delegation chaining

Documentation

  • Add comprehensive CPython compatibility documentation and implementation plan
  • Update architecture guide with Zig-only policy for native modules
  • Document all 28 native modules with examples and performance benchmarks

Maintenance

  • Remove obsolete Python compatibility layer and legacy tests
  • Clean up build configuration and module organization