Releases: SensorsINI/chipmunk
Chipmunk Tools v6.3.2 Release
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
- Root cause: ConfigureNotify events were being recycled via
- Removed empty busy-wait loop: Fixed empty
do { } while (!pollkbd2())loop ininkey2()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:
--helpnow explicitly documented (not-h, which is reserved for home directory) - Improved
-hoption: Home directory option now properly documented and functional - Updated LOGLIB documentation: Enhanced documentation explaining
LOGLIBenvironment variable purpose and search path order- Clarified difference between
-h <dir>(home directory) andLOGLIB(library directory) - Documented search order: current directory → launch directory → home directory →
$LOGLIB
- Clarified difference between
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.cnfandlessons/nfet.lgf - Reflects modern semiconductor industry practices
- Updated in
Enhanced Simulation Gates
- Added more simulation gates for beginners: Expanded gate library in
analog.cnffor 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 inpsys/src/mylib.c - Fixed empty busy-wait loop in
log/src/log.cinkey2()function - Added 10ms throttling to
m_pollkbd()when no events available
- Removed
- 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
- Added
- Screen refresh issues: Fixed screen not refreshing properly after resize
- Set
needrefr=trueafter resize to trigger proper screen refresh - Ensures zoomfit/autoscale work correctly after resize
- Set
Command-Line Interface
- Help option confusion: Clarified that
--helpshows help (not-h)-his now properly reserved for home directory specification- Updated
bin/analogwrapper script help output
- LOGLIB documentation: Improved documentation of
LOGLIBenvironment variable- Clarified search path order and relationship with
-hoption
- Clarified search path order and relationship with
📚 Documentation Improvements
Updated Documentation
- HELP.md:
- Clarified
--helpvs-husage - Enhanced
LOGLIBenvironment variable documentation - Updated search path order explanation
- Clarified
- RESIZE_FIX.md: Comprehensive technical documentation of window resize fix
- Detailed root cause analysis using
stracediagnostics - Design decisions and implementation details
- Performance impact measurements
- Detailed root cause analysis using
🚀 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
./analogFor 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
./analogOption 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/analogLinux (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:
- Linux: Built-in or via X.org
- macOS: XQuartz (download from https://www.xquartz.org/)
- X11 fonts:
6x10and8x13(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:
-
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. -
Empty Busy-Wait: An empty
do { } while (!pollkbd2())loop ininkey2()was continuously polling for input. This has been removed. -
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.0orhostname: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/libby 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 loopscb1e3c2: Updated --help command and LOGLIB env var purpose and effect2a8e3ce,8c30c55: Change default Vdd to 3.3Va3eef02: Add more simulation gates for newbies21edac6: 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
- GitHub Repository: https://github.com/sensorsINI/chipmunk
- Original Chipmunk: https://john-lazzaro.github.io/chipmunk/
- Issue Tracker: https://github.com/sensorsINI/chipmunk/issues
- Release Page: https://github.com/sensorsINI/chipmunk/releases/tag/v6.3.2
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
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
- Move mode: Four-way 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)
- Previously:
- 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
- Excluded labels from bounding box calculation in
- Fixed coordinate calculation: Corrected zoom calculation by removing incorrect
log_scale0division- Drawing code uses:
screen = circuit * scale - xoff - Object screen width =
obj_width * scale(not divided bylog_scale0)
- Drawing code uses:
- Added comprehensive debugging: New
CHIPMUNK_DEBUG_FITZOOMenvironment 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_scale0division - Missing F key binding: Fixed missing 'F' key macro binding to FIT command
Build System
- Makefile dependency tracking: Fixed
analogrebuild when source files change- Removed
bin/diglogfrom.PHONYto prevent unnecessary rebuilds - Added proper source file dependencies (
LOG_SRC_FILES,LOG_MAKEFILE) tolog/src/logtarget - Simplified build logic using Make's built-in dependency tracking
- Removed
- Release tarball structure: Fixed tarballs to include proper root folder structure
- Prevents extraction from polluting current directory
- Added
workflow_dispatchsupport with tag input for manual rebuilds - Fixes issue where
tar xf chipmunk*.tgzwould extract files directly to current folder
Path and Configuration
- Path clarification: Improved path handling documentation and behavior
- genlog fixes: Fixed
genlogconfiguration and functionality - PCMP pads: Added pad definitions from shih chip to gate library
📚 Documentation Improvements
Updated Documentation
- HELP.md:
- Added
CHIPMUNK_DEBUG_FITZOOMenvironment variable documentation - Enhanced cursor scale documentation with X11 font cursor details
- Clarified cursor size control on different platforms (X/WSL/Wayland)
- Added
- 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
./analogFor 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
./analogOption 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/analogLinux (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:
- Linux: Built-in or via X.org
- macOS: XQuartz (download from https://www.xquartz.org/)
- X11 fonts:
6x10and8x13(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 detailedfitzoom()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=1for 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 modes6347911: Increase default cursor scale to 2x and fix scaling bit order740d75e: Fix fitzoom() history dependency by excluding labels from bounding boxc31bfc2: Fix integer division bug and document history dependency in fitzoom()e07b216: Fix fitzoom() coordinate calculation and add comprehensive debugging8d17589: Fix Makefile dependency tracking for analog rebuilde71f4d4: Fix release tarballs to include proper root folder structure349c541: 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
- GitHub Repository: https://github.com/sensorsINI/chipmunk
- Original Chipmunk: https://john-lazzaro.github.io/chipmunk/
- Issue Tracker: https://github.com/sensorsINI/chipmunk/issues
- Release Page: https://github.com/sensorsINI/chipmunk/releases/tag/v6.3.1
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
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/binto your PATH - Detects your shell (
.bashrcfor bash,.zshrcfor zsh) - Smart updates: won't duplicate entries if already present
- Interactive prompt after build to add
- Improved uninstall:
make uninstallnow handles both.bashrcand.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
.gatefiles
- 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.candmylib.cexplaining key mapping - Documents which functions handle input in which contexts
- Prevents future regressions
- Added detailed comments in
📦 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 cursor0x05(ENQ): Delete - delete char AT cursor (forward delete)0x15(NAK): Ctrl-U - delete from start to cursor0x03(ETX): Ctrl-C/ESC - exit input mode0x08(BS): Left arrow - move cursor left0x1C(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 helperslog/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-bytefilerecunion alignment
File Path Handling
- Save/load path resolution: Fixed to work relative to launch directory (not current directory)
.lgfextension: 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)
- Key mapping table in
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
./analogFor 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
./analogOption 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/analogLinux (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:
- Linux: Built-in or via X.org
- macOS: XQuartz (download from https://www.xquartz.org/)
- X11 fonts:
6x10and8x13(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/X11or/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 functions4d0d14f: Fix Delete key and Ctrl-U in console input with comprehensive documentationef849ed: fix(macos): resolve struct size mismatch causing gate loading failures346c642: Fix save command to save files relative to launch directory98487d0: 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
- GitHub Repository: https://github.com/sensorsINI/chipmunk
- Original Chipmunk: https://john-lazzaro.github.io/chipmunk/
- Issue Tracker: https://github.com/sensorsINI/chipmunk/issues
- Release Page: https://github.com/sensorsINI/chipmunk/releases/tag/v6.3.0
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
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:lesson1instead ofanalog:lesson1.lgf)
Unified Preferences System ⚙️
- All user preferences consolidated into single
~/.chipmunkconfig file - Migrated from old
~/.chipmunk_geometryto unified format - Key=value format for easy editing
- Stores:
- Last opened file (
last_file=) - Window geometry (
window_width=,window_height=)
- Last opened file (
- 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:
- @tallamjr for comprehensive macOS support
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
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.candmylib.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 (
.PHONYtargets) - 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_ESCenvironment variable - Keyboard mapping improved with ESC-to-Ctrl-C at low level
🛠️ Developer Experience
- Improved build reliability: Top-level
makenow 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/analogRequirements
- 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
- HELP.md: Complete user guide with keyboard shortcuts and workflow tips
- README.md: Installation, configuration, and project overview
- CHANGELOG.md: Detailed version history
- tests/TEST_CRASH_HANDLER.md: Crash handler testing guide
🙏 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
- Repository: https://github.com/sensorsINI/chipmunk
- Original Chipmunk: https://john-lazzaro.github.io/chipmunk/
- Report Issues: https://github.com/sensorsINI/chipmunk/issues
📄 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
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
--helpoption - Browser-based help (replaces xterm) with WSL2 support
- Automatic tutorial loading for first-time users (
- Better Documentation:
- Comprehensive keyboard shortcuts reference
- Configuration files guide
- Sample circuits documentation
- Enhanced Build System:
- Top-level Makefile with
build,clean, andchecktargets - Dependency checking before build
- Clear error messages
- Top-level Makefile with
🐛 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
LOGLIBenvironment 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.lgfthroughlesson5.lgf) - Complete documentation (README, CHANGELOG, screenshots)
- Source code (for building from scratch)
🚀 Quick Start
Option 1: Use Pre-built Binaries (Recommended)
- Download
chipmunk-6.0.0.tar.gzfrom the Releases page - Extract:
tar -xzf chipmunk-6.0.0.tar.gz - 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
6x10and8x13(provided byxfonts-base,xfonts-75dpi,xfonts-100dpi)
📚 Documentation
- README.md: Complete user guide with installation, usage, and keyboard shortcuts
- CHANGELOG.md: Detailed version history
- Official Docs: https://john-lazzaro.github.io/chipmunk/document/log/index.html
🎓 Learning Resources
- Interactive Tutorials: Start with
lesson1.lgf(opens automatically for new users) - Cheat Sheet: See
log/lib/cheat.textfor 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/