Releases: GoldSim/gspy
GSPy_v1.8.9
GSPy_v1.8.8
What's New
GSPy v1.8.8 introduces fatal error signaling, giving Python scripts the ability to stop GoldSim simulations when critical errors occur.
New Feature: gspy.error()
Python scripts can now signal fatal errors that immediately terminate simulations:
import gspy
import traceback
def process_data(*args):
try:
result = calculate(args)
return (result,)
except Exception as e:
gspy.log(traceback.format_exc(), 0) # Log details
gspy.error(f"Critical error: {e}") # Stop simulation
return (0.0,)
When to use: Division by zero, missing required files, invalid configuration, or any error that makes results unreliable.
What happens: Simulation stops immediately, GoldSim displays "Error in external function. Return code 1.", and detailed error information is written to the log file.
Why Error Messages Go to Log Files
Due to the 32-bit GoldSim / 64-bit DLL architecture, the processes run in separate memory spaces and cannot share pointers. Error messages are written to log files (the authoritative debugging source) rather than displayed in GoldSim dialogs.
Additional Improvements
Enhanced exception handling throughout the C++ codebase
Better error detection and reporting in PythonManager
Fixed time series duration bug in mixed_types.py example
Comprehensive error handling documentation in README.md
Backward Compatibility
Fully backward compatible - Existing code continues to work unchanged. The gspy.error() function is optional and only needed when you want to stop simulations on critical errors.
Two Error Handling Approaches
Graceful Degradation - Use gspy.log() only for recoverable errors (simulation continues with safe fallback values)
Fatal Error Signaling - Use gspy.error() for critical errors (simulation stops immediately)
Download: https://github.com/GoldSim/gspy
Documentation: See README.md for complete error handling guide
Example: examples/Error Handling Demo/ demonstrates both approaches
GSPy v1.8.7
What's Fixed
3D Lookup Table Data Ordering Bug
Fixed a critical bug where 3D lookup table values were incorrectly mapped when passed from Python to GoldSim. This issue caused values from different layers, rows, and columns to appear in the wrong positions in GoldSim's 3D table view.
Technical Details:
Root Cause: NumPy stores 3D arrays with shape (rows, cols, layers) in C-order (row-major layout), while GoldSim expects data in layer-major ordering (all rows/columns for layer 0, then all rows/columns for layer 1, etc.)
Solution: Replaced the direct memcpy operation with explicit nested loops that properly reorder data from NumPy's (row, col, layer) format to GoldSim's layer-major format
Impact: All 3D lookup table values now correctly correspond to their intended row, column, and layer indices
Verification:
With input_scalar = 2.0, users should now see correct values:
Layer 100, Row 20: [640, 840]
Layer 100, Row 40: [680, 880]
Layer 100, Row 60: [720, 920]
Note: 1D and 2D lookup tables were unaffected as their data layouts naturally aligned with GoldSim's expected format.
Files Changed
LookupTableManager.cpp - Fixed 3D table data reordering logic
GSPy.h - Version bump to 1.8.7
CHANGELOG.md - Added v1.8.7 entry
README.md - Updated version references
Upgrade Notes
This is a bug fix release. Simply replace your existing GSPy DLL files with the new v1.8.7 versions. No configuration changes or script modifications are required.
Affected Users: If you use 3D lookup tables in your GoldSim models with GSPy, this update is strongly recommended to ensure data accuracy.
Full Changelog
See CHANGELOG.md for complete version history.
GSPy v1.8.6
GSPy v1.8.6
Release Date: November 7, 2025
Overview
Maintenance release with improved configuration validation and security documentation updates.
What's Changed
Enhanced Configuration Validation
Added validate_config() function in PythonManager.cpp to check for required JSON keys
Provides helpful suggestions for common configuration typos:
Suggests script_path if user writes script_name
Suggests function_name if user writes function
Suggests python_path if user writes python_home or python_dir
Improves error messages with actionable guidance for configuration issues
Documentation Updates
SECURITY.md: Clarified security descriptions
Changed "Installs and runs with user-level permissions" to "Runs with user-level permissions"
Changed "Memory Safe" to "Exception Handling" for accuracy
Changed "Antivirus Friendly" to "Standard Windows DLL" for clarity
README.md: Updated version references to 1.8.6
Download
Download the compiled DLLs and documentation:
GSPy-v1.8.6.zip
Package Contents
Compiled 64-bit DLLs for Python 3.11 and Python 3.14
Complete documentation (README.md, SECURITY.md)
Example files and configurations
Requirements
GoldSim 15+ (64-bit)
Python 3.11 or Python 3.14 (64-bit)
NumPy and SciPy packages
Installation
See the README for complete installation and setup instructions.
GSPy_v1.8.3
This release fixes an array dimension bug in matrix time series that was causing issues.
Improvements:
Fix: Matrix time series now use correct (rows, cols, time) array dimensions
Updated example: Complete 1D, 2D, and 3D lookup table support with custom labels
Updated example: Calendar date time series with proper metadata preservation
Improved: All examples verified working with logging integration
For existing users: Update immediately to fix matrix time series data issue.
GSPy v1.8.0
This release introduces a comprehensive multi-Python build system that enables GSPy to support multiple Python versions simultaneously, making it easier to deploy across different environments.
Major Features
Multi-Python Support
- Support for Python 3.11 and Python 3.14 in the same build
- Automatic versioned DLL generation (
GSPy_Release_311.dll,GSPy_Release_314.dll) - Version-specific JSON configuration files for seamless switching
Automated Build & Distribution
- New
build_and_distribute.batscript for one-click builds and deployment - Automatic distribution to all example directories
- Proper handling of folder names with spaces
- MSBuild integration with Visual Studio 2022
Enhanced Project Structure
- Organized test files in dedicated
tests/folder - Property sheet system for clean Python version management
- Improved version reporting and logging
What's Included
- Complete Examples Package: Ready-to-run examples for all GSPy features
- Build Scripts: Automated build and test utilities
- Documentation: Updated guides and changelog
For Developers
- Property sheets:
python_311.propsandpython_314.props - Test build script:
tests/test_build.bat - Enhanced error handling and logging
- Clean separation of build configurations
Requirements
- Visual Studio 2022
- Python 3.11 and/or Python 3.14
- NumPy and SciPy packages for target Python versions
Download the examples package below to get started with GSPy v1.8.0!
GSPy_v1.7.1
Added enhanced logging.