Releases: jrepp/ipv6-parse
v1.4.0 - WebAssembly Support & Interactive Demo
IPv6 Parse v1.4.0 - WebAssembly Support
🎉 Major new feature: Full WebAssembly support with interactive web demo!
🌐 Live Demo
Try it now: https://jrepp.github.io/ipv6-parse/
✨ What's New
WebAssembly Build Target
- Complete WASM compilation with Emscripten
- Clean, idiomatic JavaScript API wrapper
- TypeScript definitions included
- Diagnostic output support for detailed error reporting
- Zero dependencies in browser
Interactive Web Demo
- Modern, beautiful UI with animated gradients and glass morphism
- Single address mode with instant parsing and validation
- Batch mode for testing multiple addresses at once
- Load Test Set button with 60+ comprehensive test addresses
- Detailed diagnostic error messages with visual position indicators
- Real-time parsing with example addresses
- Responsive design for mobile and desktop
Enhanced Features
- Full diagnostic support in WASM showing exact error positions
- Comprehensive test coverage with 49 passing tests
- Cross-platform build support (Windows, macOS, Linux)
- Improved error messages ("Invalid address" instead of "Invalid input")
Developer Experience
- Clean JavaScript API:
new IPv6Parser(module).parse(address) - TypeScript support with full type definitions
- ESLint and ShellCheck passing
- Comprehensive documentation in docs/README.md
- Example usage patterns included
📦 What's Included
- WASM Module: Compiled parser optimized for web browsers
- JavaScript API: Clean wrapper around WASM primitives
- TypeScript Definitions: Full type safety
- Interactive Demo: Beautiful web interface at docs/index.html
- Test Suite: 60+ test addresses covering all formats
🧪 Supported Address Formats
- Basic IPv6:
2001:db8::1,::1,ffff::1 - IPv4 embedded:
::ffff:192.0.2.1 - CIDR notation:
2001:db8::/32,::1/128 - Port numbers:
[::1]:8080,[2001:db8::1]:443 - Zone IDs:
fe80::1%eth0,fe80::1%lo0 - IPv4 formats:
192.168.1.1,127.0.0.1:8080 - IPv4 shorthand:
1.2.3.4,1.2.3,1.2,1 - Complex combinations of all above
🚀 Quick Start
In Browser
<script src="https://jrepp.github.io/ipv6-parse/ipv6-parse.js"></script>
<script src="https://jrepp.github.io/ipv6-parse/ipv6-parse-api.js"></script>
<script>
createIPv6Module().then(wasmModule => {
const parser = new IPv6Parser(wasmModule);
const addr = parser.parse('2001:db8::1');
console.log('Formatted:', addr.formatted);
console.log('Components:', addr.components);
});
</script>Try the Demo
Visit https://jrepp.github.io/ipv6-parse/ to test addresses interactively
📝 Full Changelog
Added
- WebAssembly build target with CMake and Emscripten
- Interactive web demo with modern CSS design
- Batch mode for testing multiple addresses
- Load Test Set button with comprehensive test suite
- Diagnostic output mode with error position indicators
- Visual error highlighting in web interface
- TypeScript definitions for JavaScript API
- Cross-platform timing support (Windows/Unix)
Improved
- Error messages: "Invalid address" (more user-friendly)
- Caret alignment in error diagnostics
- Shell script linting (shellcheck passing)
- Build artifact organization (all in build/ directories)
- Documentation with comprehensive examples
Fixed
- Windows build errors (sys/time.h → windows.h)
- Windows SDK header warnings
- WASM memory initialization
- Error position accuracy in diagnostics
- Monospace alignment for error indicators
🔧 Technical Details
- WASM Binary Size: Optimized for web delivery
- Memory Management: Efficient with proper cleanup
- Browser Compatibility: Modern browsers with WASM support
- No Dependencies: Pure WASM + vanilla JavaScript
- Test Coverage: 49 passing tests across all modes
🙏 Acknowledgments
Thanks to everyone who contributed to making this release possible!
Installation: See README.md for full installation instructions
Documentation: Visit docs/README.md for WASM API documentation
Issues: Report bugs at https://github.com/jrepp/ipv6-parse/issues
v1.3.0 - API Improvements and Enhanced Documentation
Release 1.3.0
This release includes API improvements, enhanced documentation, and formal RFC conformance declarations.
API Improvements
- String Size Constants Enhancement: Converted
IPV6_STRING_SIZEfrom runtimeextern constto compile-time#define(value: 66), enabling compile-time buffer allocation and improved performance - New Constant: Added
IPV4_STRING_SIZEdefine (value: 22) for IPv4-specific string operations
Documentation Enhancements
- RFC Conformance: Explicitly documented compliance with:
- RFC 4291: IPv6 Addressing Architecture
- RFC 5952: IPv6 Address Text Representation
- RFC 4007: IPv6 Scoped Address Architecture (Zone IDs)
- Enhanced Feature Documentation:
- IPv4 addresses with less than 4 octets (e.g.,
1 -> 0.0.0.1,1.2 -> 1.0.0.2) - Basic IPv4 with port notation (e.g.,
10.1:8080 -> 10.0.0.1:8080)
- IPv4 addresses with less than 4 octets (e.g.,
- License Header: Added comprehensive MIT license copyright header to the main header file
Backward Compatibility
All existing types and functions remain unchanged:
- ✅
ipv6_flag_t,ipv6_address_t,ipv6_address_full_t - ✅
ipv6_compare_result_t,ipv6_diag_event_t,ipv6_diag_info_t - ✅ All API functions:
ipv6_from_str,ipv6_from_str_diag,ipv6_to_str,ipv6_compare
The change to IPV6_STRING_SIZE is backward compatible as the value (66) remains the same, only the definition mechanism has improved.
API signature change to ipv6_to_str to mimic snprintf with tests
This release also adds tests around to_str and improves the testing diagnostic output.
Official release with API cleanups to ipv6_compare
1.1.1 Fixing header signature of ipv6_compare
Initial release
Initial release tag