Releases: justinfx/gofileseq
v3.0.2 Release
v3.0.1 Release
cpp: This patch release restores previous support for C++11 by downgrading the ANTLR4 version to 4.9.3 for C++ code generation and runtime.
v3.0.0 Release
Major Release Version 3.0.0
BREAKING CHANGES:
- Go: Requires Go 1.18+ (for generics support in dependencies)
- C++: Requires C++17 (for ANTLR4 runtime support)
- Internal parsing implementation completely rewritten in both Go and C++
MAJOR CHANGES:
This major version removes the regular expression parsing of sequence patterns and implements the logic using an
ANTLR4 grammar. The grammar replicates all existing parsing rules in a more verbose and maintainable format,
making it easier to extend new rules or reason about existing ones.
Grammar-Based Parsing
- Parser code is generated from a single grammar file (grammar/fileseq.g4)
- Grammar is shared between Go and C++ implementations
- Grammar-first design minimizes language-specific visitor logic
- Ensures consistent behavior with the canonical Python implementation
- Easier to port to additional languages in the future
Improved Edge Case Handling And Test Coverage
Defensive Limits (Go & C++)
Added protections to prevent hangs and excessive memory usage:
- Range size limit: 100 million frames maximum
- Y modifier limit: 1 million frames (due to O(n²) performance)
- Stagger iterations: 10,000 maximum
- Chunk values: 1 billion maximum (prevents integer overflow)
These limits prevent pathological inputs from causing hangs or crashes while allowing all real-world use cases.
Bug Fixes
- Fixed pre-existing Split() bug in Go implementation that caused nil pointer panics when splitting
comma-separated frame ranges
C++ IMPLEMENTATION IMPROVEMENTS:
The C++ library has been significantly enhanced:
Build System (CMake)
- Builds both static (.a) and shared (.so/.dylib) libraries
- Static library is self-contained (ANTLR4 runtime merged in)
- Shared library has ANTLR4 embedded (no external dependencies)
Same Grammar, Same Behavior
- Uses identical ANTLR4 grammar as Go implementation
- Defensive limits match Go implementation
DEVELOPMENT:
Go
- Added go generate support for regenerating parser from grammar
- Requires Java runtime for ANTLR code generation (development only)
- Generated parser files are committed to the repository
C++
- CMake-based build system (replaces old waf build)
- Requires Java runtime for ANTLR code generation (development only)
- Generated parser files are committed to the repository
COMPATIBILITY:
- All existing functionality preserved
- API remains unchanged
- 100% backward compatible for consumers of the library
- Python implementation remains the canonical reference
v2.14.1 Release
What's Changed
- #30 Update findSequencesInList to not set a padding character for single files
- #30 Tweak the handling of the SingleFiles option in findSequencesInList to specifically treat ambiguous paths as single file sequences
Full Changelog: v2.14.0...v2.14.1
v2.14.0 Release
What's Changed
This could be considered a semi-breaking change in the way single files are identified as being sequences.
However, with the Go/C++ implementations expecting to match the original python fileseq, single files were being
too aggressively identified as sequences and this fix restores the behavior to match python.
- #30 go/cpp: Align single-file parsing rules with python fileseq, to make them less aggressive
Full Changelog: v2.13.0...v2.14.0
v2.13.0 Release
v2.12.0 Release
Changelog: v2.11.2...v2.12.0