Skip to content

Releases: SensorsINI/chipmunk

Chipmunk Tools v6.3.2 Release

28 Nov 06:17

Choose a tag to compare

Chipmunk Tools v6.3.2 Release

Release Date: November 28, 2025

This release fixes critical window resize performance issues, improves command-line help, and updates default simulation parameters.

🎉 What's New

✨ Key Features

Fixed Window Resize Performance Issues

  • Eliminated CPU busy-wait loops: Fixed severe performance degradation that caused 100% CPU usage during window resizing
    • Root cause: ConfigureNotify events were being recycled via XPutBackEvent(), creating infinite event loops
    • Solution: Changed event handlers to consume events instead of recycling them
  • Removed empty busy-wait loop: Fixed empty do { } while (!pollkbd2()) loop in inkey2() that caused tight polling
  • Added intelligent throttling: Implemented 10ms throttling in m_pollkbd() when no events are available
  • Fixed layout updates: Added update_screen_layout() to properly recalculate layout variables after resize
  • Improved screen refresh: Window geometry and menu positioning now update correctly after resize
  • Results: Smooth window resizing with near-zero CPU usage during idle, multiple resizes work correctly, simulation continues running during resize

Enhanced Command-Line Help System

  • Clarified help options: --help now explicitly documented (not -h, which is reserved for home directory)
  • Improved -h option: Home directory option now properly documented and functional
  • Updated LOGLIB documentation: Enhanced documentation explaining LOGLIB environment variable purpose and search path order
    • Clarified difference between -h <dir> (home directory) and LOGLIB (library directory)
    • Documented search order: current directory → launch directory → home directory → $LOGLIB

Updated Default Simulation Parameters

  • Default Vdd changed to 3.3V: Updated from 5V to 3.3V to match modern CMOS standards
    • Updated in log/lib/models.cnf and lessons/nfet.lgf
    • Reflects modern semiconductor industry practices

Enhanced Simulation Gates

  • Added more simulation gates for beginners: Expanded gate library in analog.cnf for educational use

📦 What's Included

This release includes:

  • Pre-built binaries (via GitHub Actions CI):
    • Linux x86_64
    • macOS Intel (x86_64)
    • macOS Apple Silicon (ARM64)
  • All configuration files and gate libraries
  • Interactive tutorial circuits (in lessons/ directory)
  • Complete documentation (README, CHANGELOG, DEVELOPER.md, HELP.md)
  • Source code with cross-platform build system

🐛 Bug Fixes

Window Resize and Performance

  • CPU busy-wait during resize: Fixed infinite event recycling causing 100% CPU usage
    • Removed XPutBackEvent() for ConfigureNotify events in psys/src/mylib.c
    • Fixed empty busy-wait loop in log/src/log.c inkey2() function
    • Added 10ms throttling to m_pollkbd() when no events available
  • Layout not updating after resize: Fixed missing layout variable updates after window resize
    • Added update_screen_layout() function to recalculate layout variables
    • Modified pen() to detect size changes and trigger layout updates
  • Screen refresh issues: Fixed screen not refreshing properly after resize
    • Set needrefr=true after resize to trigger proper screen refresh
    • Ensures zoomfit/autoscale work correctly after resize

Command-Line Interface

  • Help option confusion: Clarified that --help shows help (not -h)
    • -h is now properly reserved for home directory specification
    • Updated bin/analog wrapper script help output
  • LOGLIB documentation: Improved documentation of LOGLIB environment variable
    • Clarified search path order and relationship with -h option

📚 Documentation Improvements

Updated Documentation

  • HELP.md:
    • Clarified --help vs -h usage
    • Enhanced LOGLIB environment variable documentation
    • Updated search path order explanation
  • RESIZE_FIX.md: Comprehensive technical documentation of window resize fix
    • Detailed root cause analysis using strace diagnostics
    • Design decisions and implementation details
    • Performance impact measurements

🚀 Quick Start

Option 1: Use Pre-built Binaries (Recommended)

For macOS (including Apple Silicon):

# Download from releases page
wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.2/chipmunk-macos-arm64.tar.gz
# OR for Intel Macs:
wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.2/chipmunk-macos-intel.tar.gz

# Extract and run
tar -xzf chipmunk-macos-*.tar.gz
cd chipmunk-macos-*/bin
./analog

For Linux:

wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.2/chipmunk-linux-x86_64.tar.gz
tar -xzf chipmunk-linux-x86_64.tar.gz
cd chipmunk-linux-x86_64/bin
./analog

Option 2: Build from Source

macOS (including Apple Silicon):

# Install dependencies
brew install --cask xquartz  # Provides X11, fonts, headers
brew install gcc             # C compiler

# Clone and build
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
git checkout v6.3.2
make

# Run
./bin/analog

Linux (Ubuntu/Debian/WSL2):

# Install dependencies
sudo apt-get install gcc make libx11-dev xfonts-base xfonts-75dpi xfonts-100dpi
xset fp rehash

# Clone and build
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
git checkout v6.3.2
make

# Run
./bin/analog

📋 System Requirements

All Platforms

  • X11 Window System:
  • X11 fonts: 6x10 and 8x13 (included with XQuartz on macOS)

macOS-Specific

  • OS: macOS 10.15 (Catalina) or later
  • Architecture: Intel (x86_64) or Apple Silicon (ARM64)
  • XQuartz: Version 2.8.0 or later
  • Compiler: GCC via Homebrew (Clang not sufficient for all features)

Linux-Specific

  • OS: Ubuntu 20.04+, Debian 11+, or compatible (including WSL2)
  • Compiler: GCC (ANSI C compatible)
  • Libraries: X11 development libraries (libX11)

🔧 Technical Details

Platform Support Matrix

Platform Architecture Build Status Notes
Linux x86_64 ✅ Verified Native and WSL2
macOS ARM64 (M1/M2/M3) ✅ Verified Requires XQuartz
macOS Intel (x86_64) ✅ Verified Requires XQuartz

Window Resize Fix Details

The window resize performance fix addresses three critical issues:

  1. Event Recycling Loop: ConfigureNotify events were being put back on the X11 event queue with XPutBackEvent(), causing infinite loops. Events are now consumed immediately after handling.

  2. Empty Busy-Wait: An empty do { } while (!pollkbd2()) loop in inkey2() was continuously polling for input. This has been removed.

  3. No Throttling: m_pollkbd() was called in tight loops without throttling. Added intelligent 10ms delays when no events are available.

Performance Impact:

  • Before: 100% CPU usage during resize, frequent hangs requiring Ctrl-Z
  • After: Near-zero CPU usage during idle, smooth resizing, no hangs

See RESIZE_FIX.md for detailed technical analysis.

Command-Line Options

The analog command supports the following options:

  • --help: Show help message and exit (use --help, not -h)
  • -h <dir>: Specify home directory for searching gate files, config files, etc.
  • -c <file>: Specify configuration file (default: analog.cnf)
  • -v: Vanilla LOG mode (no CNF file loaded)
  • -x <display>: Specify X display name (e.g., :0.0 or hostname:0)
  • -z <file>: Enable trace mode with output file
  • -d <file>: Specify dump file for debug output
  • -t <file>: Specify trace file for trace output (alternative to -z <file>)
  • -r <tool>: Run a specific tool immediately on startup (non-interactive mode)

Environment Variables:

  • LOGLIB: Automatically set to ${CHIPMUNK_DIR}/log/lib by wrapper script. Specifies directory for configuration files and gate libraries.
  • -h <dir>: Sets home directory (default: ~/log) for user-specific files.

📝 Full Changelog

See CHANGELOG.md for complete details of all changes since v6.3.1.

Key Commits in This Release

  • 02a7503: Fix window resize hangs and CPU busy-wait loops
  • cb1e3c2: Updated --help command and LOGLIB env var purpose and effect
  • 2a8e3ce, 8c30c55: Change default Vdd to 3.3V
  • a3eef02: Add more simulation gates for newbies
  • 21edac6: Bump to 6.3.2 for window resizing

🙏 Credits

Original Authors:

  • Dave Gillespie
  • John Lazzaro
  • Rick Koshi
  • Glenn Gribble
  • Adam Greenblatt
  • Maryann Maher

Version 6.3.2 Contributors:

  • Tobi Delbruck (Sensors Group, UZH-ETH Zurich) - Maintainer, window resize performance fixes, help system improvements, release management

Special Thanks:

  • Community feedback on window resize performance issues
  • Testers who reported CPU usage problems during window resizing

🔗 Links


Note: This is a community-maintained fork focused on modern platform support. For the original Chipmunk distribution, visit https://john-lazzaro.github.io/chipmunk/

Chipmunk Tools v6.3.1 Release

23 Nov 14:17

Choose a tag to compare

Chipmunk Tools v6.3.1 Release

Release Date: November 23, 2025

This release brings improvements to mouse cursor handling, zoom fit functionality, and build system reliability.

🎉 What's New

✨ Key Features

Enhanced Mouse Cursor System

  • Distinct X11 cursors for all editing modes - Each editing mode now has a unique, semantically meaningful cursor:
    • Move mode: Four-way arrow (⟷) - XC_fleur
    • Copy mode: Plus sign (+) - XC_plus
    • Delete mode: Large X - XC_X_cursor
    • Probe mode: Arrow with question mark - XC_question_arrow
    • Box mode: Crosshair - XC_crosshair
    • Rotate mode: Circular arrows (↻) - XC_exchange
    • Mirror H mode: Horizontal double arrow (↔) - XC_sb_h_double_arrow
    • Mirror V mode: Vertical double arrow (↕) - XC_sb_v_double_arrow
  • Improved cursor visibility: Increased default cursor scale to 2x for better visibility on high-DPI displays
  • Fixed cursor scaling bit order: Corrected bitmap cursor scaling implementation
  • Eliminated cursor flickering: Removed software/hardware cursor conflicts that caused visual glitches
  • Fixed memory corruption: Extended cursors array from 4 to 9 elements to prevent array bounds violations
  • Application startup fix: Application now starts with normal arrow cursor instead of rotation cursor

Fixed Zoom Fit (F key) Functionality

  • Fixed integer division bug: Ensures minimum zoom of 1 when view is smaller than object size
    • Previously: zoom_x = 620/764 = 0, causing incorrect minimum zoom selection
    • Now: zoom_x = max(1, view_width / obj_width)
  • Fixed history dependency: Successive F key presses no longer zoom out progressively
    • Excluded labels from bounding box calculation in fitzoom() to prevent scale-dependent width changes
    • Labels caused history dependency because width = m_strwidth(...) / gg.scale
  • Fixed coordinate calculation: Corrected zoom calculation by removing incorrect log_scale0 division
    • Drawing code uses: screen = circuit * scale - xoff
    • Object screen width = obj_width * scale (not divided by log_scale0)
  • Added comprehensive debugging: New CHIPMUNK_DEBUG_FITZOOM environment variable for detailed zoom diagnostics
    • Shows window size, margins, bounding boxes, object dimensions, zoom calculations, and fit verification

📦 What's Included

This release includes:

  • Pre-built binaries (via GitHub Actions CI):
    • Linux x86_64
    • macOS Intel (x86_64)
    • macOS Apple Silicon (ARM64)
  • All configuration files and gate libraries
  • New PCMP pads: Added pad definitions from shih chip to log/lib/pads.gate
  • Interactive tutorial circuits (in lessons/ directory)
  • Complete documentation (README, CHANGELOG, DEVELOPER.md, HELP.md)
  • Source code with cross-platform build system

🐛 Bug Fixes

Zoom and View

  • History dependency in fitzoom(): Fixed successive F key presses zooming out progressively
    • Root cause: Labels included in bounding box have width dependent on current zoom level
    • Solution: Exclude labels from fitzoom() bounding box calculation
  • Incorrect coordinate calculation: Fixed zoom calculation by removing incorrect log_scale0 division
  • Missing F key binding: Fixed missing 'F' key macro binding to FIT command

Build System

  • Makefile dependency tracking: Fixed analog rebuild when source files change
    • Removed bin/diglog from .PHONY to prevent unnecessary rebuilds
    • Added proper source file dependencies (LOG_SRC_FILES, LOG_MAKEFILE) to log/src/log target
    • Simplified build logic using Make's built-in dependency tracking
  • Release tarball structure: Fixed tarballs to include proper root folder structure
    • Prevents extraction from polluting current directory
    • Added workflow_dispatch support with tag input for manual rebuilds
    • Fixes issue where tar xf chipmunk*.tgz would extract files directly to current folder

Path and Configuration

  • Path clarification: Improved path handling documentation and behavior
  • genlog fixes: Fixed genlog configuration and functionality
  • PCMP pads: Added pad definitions from shih chip to gate library

📚 Documentation Improvements

Updated Documentation

  • HELP.md:
    • Added CHIPMUNK_DEBUG_FITZOOM environment variable documentation
    • Enhanced cursor scale documentation with X11 font cursor details
    • Clarified cursor size control on different platforms (X/WSL/Wayland)
  • Inline code comments: Comprehensive documentation of cursor system architecture

🚀 Quick Start

Option 1: Use Pre-built Binaries (Recommended)

For macOS (including Apple Silicon):

# Download from releases page
wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.1/chipmunk-macos-arm64.tar.gz
# OR for Intel Macs:
wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.1/chipmunk-macos-intel.tar.gz

# Extract and run
tar -xzf chipmunk-macos-*.tar.gz
cd chipmunk-macos-*/bin
./analog

For Linux:

wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.1/chipmunk-linux-x86_64.tar.gz
tar -xzf chipmunk-linux-x86_64.tar.gz
cd chipmunk-linux-x86_64/bin
./analog

Option 2: Build from Source

macOS (including Apple Silicon):

# Install dependencies
brew install --cask xquartz  # Provides X11, fonts, headers
brew install gcc             # C compiler

# Clone and build
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
git checkout v6.3.1
make

# Run
./bin/analog

Linux (Ubuntu/Debian/WSL2):

# Install dependencies
sudo apt-get install gcc make libx11-dev xfonts-base xfonts-75dpi xfonts-100dpi
xset fp rehash

# Clone and build
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
git checkout v6.3.1
make

# Run
./bin/analog

📋 System Requirements

All Platforms

  • X11 Window System:
  • X11 fonts: 6x10 and 8x13 (included with XQuartz on macOS)

macOS-Specific

  • OS: macOS 10.15 (Catalina) or later
  • Architecture: Intel (x86_64) or Apple Silicon (ARM64)
  • XQuartz: Version 2.8.0 or later
  • Compiler: GCC via Homebrew (Clang not sufficient for all features)

Linux-Specific

  • OS: Ubuntu 20.04+, Debian 11+, or compatible (including WSL2)
  • Compiler: GCC (ANSI C compatible)
  • Libraries: X11 development libraries (libX11)

🔧 Technical Details

Platform Support Matrix

Platform Architecture Build Status Notes
Linux x86_64 ✅ Verified Native and WSL2
macOS ARM64 (M1/M2/M3) ✅ Verified Requires XQuartz
macOS Intel (x86_64) ✅ Verified Requires XQuartz

New Environment Variables

  • CHIPMUNK_DEBUG_FITZOOM: Enable detailed fitzoom() debug output showing zoom calculations, bounding boxes, and coordinate transformations.
    CHIPMUNK_DEBUG_FITZOOM=1 analog circuit.lgf

Cursor System Architecture

The cursor system now uses X11 font cursors by default for better visibility and compatibility:

  • Hardware cursors: Uses X server's native font cursors (better performance, no flickering)
  • Bitmap cursors: Available via CHIPMUNK_USE_BITMAP_CURSOR=1 for classic look (with known redraw bug)
  • Cursor scale: Default 2x for bitmap cursors when enabled; X11 font cursor size controlled by desktop environment

📝 Full Changelog

See CHANGELOG.md for complete details of all changes since v6.3.0.

Key Commits in This Release

  • 4f37c49: Add distinct X11 cursors for all editing modes
  • 6347911: Increase default cursor scale to 2x and fix scaling bit order
  • 740d75e: Fix fitzoom() history dependency by excluding labels from bounding box
  • c31bfc2: Fix integer division bug and document history dependency in fitzoom()
  • e07b216: Fix fitzoom() coordinate calculation and add comprehensive debugging
  • 8d17589: Fix Makefile dependency tracking for analog rebuild
  • e71f4d4: Fix release tarballs to include proper root folder structure
  • 349c541: Clarified path, fixed genlog and added pcmp pads

🙏 Credits

Original Authors:

  • Dave Gillespie
  • John Lazzaro
  • Rick Koshi
  • Glenn Gribble
  • Adam Greenblatt
  • Maryann Maher

Version 6.3.1 Contributors:

  • Tobi Delbruck (Sensors Group, UZH-ETH Zurich) - Maintainer, cursor system improvements, zoom fit fixes, release management

Special Thanks:

  • Community testing and feedback on cursor visibility and zoom behavior

🔗 Links


Note: This is a community-maintained fork focused on modern platform support. For the original Chipmunk distribution, visit https://john-lazzaro.github.io/chipmunk/

Chipmunk Tools v6.3.0

21 Nov 14:25

Choose a tag to compare

Chipmunk Tools v6.3.0 Release

Release Date: November 21, 2025

This release brings critical bug fixes for keyboard input handling and comprehensive macOS Apple Silicon support with cross-platform improvements.

🎉 What's New

✨ Key Features

macOS Apple Silicon Support (Verified)

  • Full native support for Apple Silicon (M1/M2/M3) with clean builds
  • Cross-platform shell support: Automatic PATH setup now supports both bash and zsh
    • Interactive prompt after build to add chipmunk/bin to your PATH
    • Detects your shell (.bashrc for bash, .zshrc for zsh)
    • Smart updates: won't duplicate entries if already present
  • Improved uninstall: make uninstall now handles both .bashrc and .zshrc
  • Platform-specific compilation: Fixed struct size mismatches using -D__alpha__ flag
    • Resolves "Can't find gate 'TIME'" error on macOS
    • Ensures 256-byte alignment for binary .gate files
  • Clang compatibility: Converted GNU C nested functions to standard C static functions
    • No more compilation errors on macOS/Clang
    • Maintains full Linux/GCC compatibility

Fixed Keyboard Input Handling

  • Fixed Delete key (forward delete) on native Linux
    • Previously worked on WSL but was broken on native Linux
    • Now correctly deletes the character AT the cursor position (forward delete)
    • Backspace correctly deletes character BEFORE cursor (backward delete)
  • Fixed Ctrl-U behavior
    • Now deletes from start of line to character before cursor (standard shell behavior)
    • Works consistently in both console window and : command prompt
  • Comprehensive keyboard architecture documentation
    • Added detailed comments in log.c and mylib.c explaining key mapping
    • Documents which functions handle input in which contexts
    • Prevents future regressions

📦 What's Included

This release includes:

  • Pre-built binaries (via GitHub Actions CI):
    • Linux x86_64
    • macOS Intel (x86_64)
    • macOS Apple Silicon (ARM64)
  • All configuration files and gate libraries
  • Interactive tutorial circuits (now in lessons/ directory)
  • Complete documentation (README, CHANGELOG, DEVELOPER.md)
  • Source code with cross-platform build system

🐛 Bug Fixes

Keyboard Input

  • Delete key regression on native Linux: Fixed forward delete functionality in console input
  • Ctrl-U behavior: Now correctly deletes from cursor to start of line (matches shell behavior)
  • Key event handling: Comprehensive fix for X11 keyboard event mapping
    • 0x07 (BEL): Backspace - delete char BEFORE cursor
    • 0x05 (ENQ): Delete - delete char AT cursor (forward delete)
    • 0x15 (NAK): Ctrl-U - delete from start to cursor
    • 0x03 (ETX): Ctrl-C/ESC - exit input mode
    • 0x08 (BS): Left arrow - move cursor left
    • 0x1C (FS): Right arrow - move cursor right

Cross-Platform Compilation

  • Nested function errors on macOS: Converted 4 instances of GNU C nested functions to standard C static functions
    • psys/src/mylib.c: 3 debug logging helpers
    • log/src/log.c: 1 coordinate conversion helper
  • Compiler warning flags: Updated Makefiles to use platform-appropriate flags
    • GCC-specific flags only on Linux
    • Clang-compatible flags on macOS
  • Struct size mismatch on macOS: Added -D__alpha__ to ensure 256-byte filerec union alignment

File Path Handling

  • Save/load path resolution: Fixed to work relative to launch directory (not current directory)
  • .lgf extension: Made optional for file loading (user-friendly)
  • Buffer overflow: Fixed in savepage() path resolution

📚 Documentation Improvements

New Documentation

  • DEVELOPER.md: Comprehensive cross-platform development guide
    • Explains nested functions vs. static functions
    • Documents compiler differences (GCC vs. Clang)
    • Provides coding guidelines for maintainability
  • Keyboard architecture comments: Detailed inline documentation in source
    • Key mapping table in mylib.c
    • Input function responsibilities in log.c
    • Context-specific behavior (console vs. main window)

Updated Documentation

  • README.md: Enhanced with cross-platform build instructions
  • HELP.md: Added Chipmunk-specific environment variables section
  • CHANGELOG.md: Updated with all v6.3.0 changes

🚀 Quick Start

Option 1: Use Pre-built Binaries (Recommended)

For macOS (including Apple Silicon):

# Download from releases page
wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.0/chipmunk-macos-arm64.tar.gz
# OR for Intel Macs:
wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.0/chipmunk-macos-intel.tar.gz

# Extract and run
tar -xzf chipmunk-macos-*.tar.gz
cd chipmunk-macos-*/bin
./analog

For Linux:

wget https://github.com/sensorsINI/chipmunk/releases/download/v6.3.0/chipmunk-linux-x86_64.tar.gz
tar -xzf chipmunk-linux-x86_64.tar.gz
cd chipmunk-linux-x86_64/bin
./analog

Option 2: Build from Source

macOS (including Apple Silicon):

# Install dependencies
brew install --cask xquartz  # Provides X11, fonts, headers
brew install gcc             # C compiler

# Clone and build
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
make

# After build, you'll be prompted to add to PATH
# For zsh users (default on macOS): adds to ~/.zshrc
# For bash users: adds to ~/.bashrc

# Run
./bin/analog

Linux (Ubuntu/Debian/WSL2):

# Install dependencies
sudo apt-get install gcc make libx11-dev xfonts-base xfonts-75dpi xfonts-100dpi
xset fp rehash

# Clone and build
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
make

# After build, you'll be prompted to add to PATH
# Adds to ~/.bashrc for bash users

# Run
./bin/analog

📋 System Requirements

All Platforms

  • X11 Window System:
  • X11 fonts: 6x10 and 8x13 (included with XQuartz on macOS)

macOS-Specific

  • OS: macOS 10.15 (Catalina) or later
  • Architecture: Intel (x86_64) or Apple Silicon (ARM64)
  • XQuartz: Version 2.8.0 or later
  • Compiler: GCC via Homebrew (Clang not sufficient for all features)

Linux-Specific

  • OS: Ubuntu 20.04+, Debian 11+, or compatible (including WSL2)
  • Compiler: GCC (ANSI C compatible)
  • Libraries: X11 development libraries (libX11)

🔧 Technical Details

Platform Support Matrix

Platform Architecture Build Status Notes
Linux x86_64 ✅ Verified Native and WSL2
macOS ARM64 (M1/M2/M3) ✅ Verified Requires XQuartz
macOS Intel (x86_64) ✅ Verified Requires XQuartz

Build System Improvements

  • Automatic platform detection: Makefiles detect OS and configure appropriately
  • XQuartz detection: Automatically finds XQuartz at /opt/X11 or /usr/X11R6
  • Shell detection: PATH setup script detects bash vs. zsh
  • CI/CD: GitHub Actions builds all platforms automatically on release

Code Quality

  • Standard C compliance: All code now uses C89/C99 standard features
  • No GNU extensions: Eliminated nested functions for cross-platform compatibility
  • Cleaner builds: Platform-specific warning flag suppression
  • Comprehensive comments: Inline documentation for maintainability

📝 Full Changelog

See CHANGELOG.md for complete details of all changes since v6.2.0.

Key Commits in This Release

  • 7065f31: Fix cross-platform compilation: nested functions to static functions
  • 4d0d14f: Fix Delete key and Ctrl-U in console input with comprehensive documentation
  • ef849ed: fix(macos): resolve struct size mismatch causing gate loading failures
  • 346c642: Fix save command to save files relative to launch directory
  • 98487d0: Auto path setup with shell detection

🙏 Credits

Version 6.3.0 Contributors:

  • Tobi Delbruck (Sensors Group, UZH-ETH Zurich) - Maintainer, keyboard fixes, release management
  • Tarek Allam Jr (@tallamjr) - macOS support, struct alignment fix, CI/CD setup

🔗 Links


Note: This is a community-maintained fork focused on modern platform support. For the original Chipmunk distribution, visit https://john-lazzaro.github.io/chipmunk/

Chipmunk v6.2.0 - macOS Support, Dynamic Window Titles, NFET example

19 Nov 07:22

Choose a tag to compare

Chipmunk v6.2.0 Release Notes

🎉 Major Improvements

macOS Support 🍎

Full macOS compatibility has been added thanks to community contribution from @tallamjr (PR #2)!

  • ✅ Fixed struct size mismatch causing gate loading failures on macOS
  • ✅ POSIX-compliant qsort comparison functions
  • ✅ Modernized K&R function prototypes to ANSI C
  • ✅ Resolved circular variable references in Makefiles
  • ✅ Added macOS-specific build instructions to README
  • ✅ GitHub Actions workflow for multi-platform builds (Linux & macOS)

Dynamic Window Titles 🪟

  • Window title now displays current filename: analog:<filename>
  • Automatically updates when files are opened or saved
  • Clean display without file extensions (e.g., analog:lesson1 instead of analog:lesson1.lgf)

Unified Preferences System ⚙️

  • All user preferences consolidated into single ~/.chipmunk config file
  • Migrated from old ~/.chipmunk_geometry to unified format
  • Key=value format for easy editing
  • Stores:
    • Last opened file (last_file=)
    • Window geometry (window_width=, window_height=)
  • Automatic saving on file operations and program exit

New Example Circuit 🔬

Added nfet.lgf - NFET transistor characterization example:

  • Demonstrates Ids vs Vgs sweep (drain current vs gate-source voltage)
  • Shows logarithmic plotting in scope mode
  • Useful for understanding MOSFET characteristics and parameter extraction

🐛 Bug Fixes

  • Fixed various C99 compatibility issues
  • Added POSIX headers for select() function
  • Renamed 'bool' struct member to avoid C99 reserved keyword conflicts

📚 Documentation

  • Added comprehensive macOS installation instructions
  • Updated Quick Start guide in README
  • Added nfet.lgf example documentation

✅ Testing

  • Confirmed working on:
    • Linux (Ubuntu/Debian)
    • WSL2 (Windows 11)
    • macOS (via community testing)

🙏 Contributors

Special thanks to:


Installation

Pre-built Binaries (Recommended)

Download the latest release for your platform:
wget https://github.com/sensorsINI/chipmunk/releases/download/v6.2.0/chipmunk-linux-x86_64.tar.gz
tar -xzf chipmunk-linux-x86_64.tar.gz
cd chipmunk
./bin/analog### Build from Source
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
git checkout v6.2.0
make
./bin/analogFor full installation instructions, see README.md.


Full Changelog: v6.1.0...v6.2.0

v6.1.0

17 Nov 07:22

Choose a tag to compare

Chipmunk v6.1.0 - Enhanced UX with Fit-and-Zoom

Release Date: November 17, 2025

Chipmunk v6.1.0, adds several features focused on improving user experience, especially for first-time users and modern display workflows.

🎯 Highlights

🚀 Fit-and-Zoom Feature

Press F to automatically center and zoom all circuit objects to fit perfectly in your window. This feature:

  • Calculates optimal zoom level from 7 available scales
  • Centers the circuit with comfortable margins
  • Works automatically on startup for immediate proper view
  • Uses an 80% safety factor to ensure circuits fit with margin

📺 Modern Display Support

  • Default window size increased to 1280x960 (from 512x390) for modern displays
  • Window geometry persistence: Your window size is remembered across sessions in ~/.chipmunk_geometry
  • 7 zoom levels (expanded from 5): scales of 1, 2, 3, 5, 8, 12, 20 for better granularity

👋 First-Time User Experience

Startup welcome message now displays in terminal with essential keyboard shortcuts:

================================================================
  Chipmunk Analog Circuit Simulator - Quick Start
================================================================
  Essential Keys:
    ?  - Help    C - Catalog    c - Configure    d - Delete
    F  - Fit all objects    < > - Zoom    Esc/^C - Exit mode
    s  - Scope   0 - Reset      Space - Refresh

  Mouse: Tap to rotate/place, Drag to move, Right-click cancel
  More help: Press ? key or see HELP.md in repo
================================================================

⌨️ Enhanced Keyboard Support

  • ESC key now exits modes (wire-drawing, delete, etc.) alongside Ctrl-C
  • More intuitive workflow for users expecting standard ESC behavior

🖱️ Smarter Click Handling

  • Focus-aware clicking: Prevents accidental wire-drawing when clicking to bring window into focus
  • First click after gaining focus is ignored for left-button actions

📋 Complete Feature List

Added

  • Startup welcome message with essential keyboard shortcuts
  • Fit-and-zoom feature with 'F' key
  • Extended zoom levels (7 scales: 1, 2, 3, 5, 8, 12, 20)
  • Auto-fit on startup when circuits are loaded
  • ESC key support for exiting modes
  • Window geometry persistence across sessions
  • Focus-aware click handling to prevent accidental operations
  • Improved crash reporting with source file/line numbers for PIE binaries
  • Comprehensive code documentation in log.c and mylib.c
  • Complete user guide (HELP.md) with keyboard shortcuts and workflow tips
  • Crash handler test utility with documentation

Fixed

  • Build system now reliably detects source changes (.PHONY targets)
  • String buffer overflow warnings properly handled
  • WSL compatibility issues in PATH setup script
  • Fit-and-zoom coordinate system calculations for accurate centering
  • Zoom safety margins after discrete zoom level selection
  • Division by zero protection in empty circuits
  • Global variable corruption in zoom calculations

Changed

  • Default window size: 1280x960 (from 512x390)
  • Wire-drawing workflow clarified in documentation
  • Debug support via CHIPMUNK_DEBUG_ESC environment variable
  • Keyboard mapping improved with ESC-to-Ctrl-C at low level

🛠️ Developer Experience

  • Improved build reliability: Top-level make now always detects source file changes
  • Better documentation: Code headers explain coordinate transformations and event handling
  • Debug utilities: Environment-variable-controlled debug logging for troubleshooting

📦 Installation

Quick Start (Ubuntu/Debian)

git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
git checkout v6.1.0
make
./bin/analog

Requirements

  • GCC C compiler
  • X11 development libraries (libx11-dev)
  • X11 fonts (xfonts-base, xfonts-75dpi, xfonts-100dpi)
  • Standard build tools (make, ar)

For detailed installation instructions, see README.md.

📚 Documentation

🙏 Acknowledgments

This release builds on the excellent work of the original Chipmunk developers. Special thanks to the legacy of 1980s circuit simulation tools that continue to be valuable for education and research.

🔗 Links

📄 License

GNU General Public License (GPL) version 1 or later. See COPYING files for details.


Previous Release: v6.0.0 - Initial modernization release

chipmunk-6.0.0

15 Nov 10:35

Choose a tag to compare

Chipmunk Tools v6.0.0 Release

Release Date: November 15, 2024

This is the first release of the Chipmunk Tools fork, based on the original Chipmunk 5.66 from John Lazzaro's GitHub Pages site.

🎉 What's New

This release brings significant improvements to make Chipmunk easier to build, use, and understand on modern Linux systems (Ubuntu/WSL2).

✨ Key Features

  • Quick Start Guide: New users can get up and running in minutes with clear installation instructions
  • Improved User Experience:
    • Automatic tutorial loading for first-time users (lesson1.lgf)
    • Help system with --help option
    • Browser-based help (replaces xterm) with WSL2 support
  • Better Documentation:
    • Comprehensive keyboard shortcuts reference
    • Configuration files guide
    • Sample circuits documentation
  • Enhanced Build System:
    • Top-level Makefile with build, clean, and check targets
    • Dependency checking before build
    • Clear error messages

🐛 Bug Fixes

  • Fixed segfault: Resolved crash in XSetCommand() that prevented program startup
  • Fixed window naming: Windows now correctly display as "analog" and "analog-console"
  • Fixed configuration discovery: Automatic LOGLIB environment variable setup
  • Fixed X11 font errors: Documented required font packages

📦 What's Included

This release includes:

  • Pre-built binaries for Linux x86_64 (9.6M)
  • All configuration files and gate libraries
  • Interactive tutorial circuits (lesson1.lgf through lesson5.lgf)
  • Complete documentation (README, CHANGELOG, screenshots)
  • Source code (for building from scratch)

🚀 Quick Start

Option 1: Use Pre-built Binaries (Recommended)

  1. Download chipmunk-6.0.0.tar.gz from the Releases page
  2. Extract: tar -xzf chipmunk-6.0.0.tar.gz
  3. Run: cd chipmunk-6.0.0 && ./bin/analog

Option 2: Build from Source

# Install dependencies
sudo apt-get install gcc make libx11-dev xfonts-base xfonts-75dpi xfonts-100dpi
xset fp rehash

# Clone and build
git clone https://github.com/sensorsINI/chipmunk.git
cd chipmunk
make build

# Run
./bin/analog

📋 System Requirements

  • OS: Linux (tested on Ubuntu/WSL2)
  • Compiler: GCC (ANSI C compatible)
  • Libraries: X11 development libraries (libX11)
  • Fonts: X11 fonts 6x10 and 8x13 (provided by xfonts-base, xfonts-75dpi, xfonts-100dpi)

📚 Documentation

🎓 Learning Resources

  • Interactive Tutorials: Start with lesson1.lgf (opens automatically for new users)
  • Cheat Sheet: See log/lib/cheat.text for quick reference
  • Sample Circuits: Explore log/lib/ for example circuits

🔧 Technical Details

  • Base Version: Chipmunk 5.66
  • This Release: 6.0.0
  • License: GNU GPL v1 or later
  • Platform: Linux x86_64

🙏 Credits

Original Authors:

  • Dave Gillespie
  • John Lazzaro
  • Rick Koshi
  • Glenn Gribble
  • Adam Greenblatt
  • Maryann Maher

Version 6.0.0 Maintainer:

  • Tobi Delbruck (Sensors Group, UZH-ETH Zurich)

📝 Full Changelog

See CHANGELOG.md for complete details of all changes.


Note: This is a community-maintained fork. For the original Chipmunk distribution, visit https://john-lazzaro.github.io/chipmunk/