Quick reference for creating a new release.
- All features are complete and tested
- All tests pass (
./build/test/thread_safety_testand./build/test/sio_test) - Documentation is updated
- No uncommitted changes (
git status) - On master branch (
git branch)
./scripts/create_release.shFollow the prompts!
Edit CMakeLists.txt line 4:
PROJECT(sioclient
VERSION 3.2.0 # ← Update this
)Add new section at the top:
# [3.2.0](https://github.com/yourusername/socket.io-client-cpp/compare/3.1.0...3.2.0) (2025-10-24)
### Features
- List your new features
### Bug Fixes
- List your bug fixes
### Performance
- List performance improvementsChange "Recent Improvements" to "What's New in v3.2.0"
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
./test/thread_safety_test
./test/sio_test
cd ..git add CMakeLists.txt CHANGELOG.md README.md
git commit -m "chore: bump version to 3.2.0"git tag -a v3.2.0 -m "Release v3.2.0
Major improvements:
- C++20 coroutine support
- Detailed disconnect tracking
- Performance optimizations"git push origin master
git push origin v3.2.0- Go to: https://github.com/yourusername/socket.io-client-cpp/releases/new
- Select tag:
v3.2.0 - Title:
v3.2.0 - C++20 Coroutines & Enhanced Features - Description: Copy from CHANGELOG.md
- Click "Publish release"
- GitHub release created
- Release notes are clear and complete
- Tag is pushed to repository
- Users notified (if applicable)
- Update project README badges (if needed)
Follow Semantic Versioning:
-
Major (X.0.0): Breaking changes
- Changed API signatures
- Removed features
- Incompatible behavior changes
-
Minor (x.Y.0): New features (backward compatible)
- New APIs
- New functionality
- Deprecations (but not removals)
-
Patch (x.y.Z): Bug fixes only
- No new features
- No API changes
- Only fixes
Current: v3.1.0
Scenarios:
- Added C++20 coroutines → v3.2.0 (Minor - new feature)
- Fixed memory leak → v3.1.1 (Patch - bug fix)
- Changed emit() signature → v4.0.0 (Major - breaking)
# Check current version
grep VERSION CMakeLists.txt | head -1
# Check git tags
git tag -l
# Check latest tag
git describe --tags --abbrev=0
# Build and test
mkdir -p build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j$(nproc) && ./test/thread_safety_test && ./test/sio_test
# Create release (automated)
./scripts/create_release.sh
# Push everything
git push origin master && git push origin --tagsFix the tests before releasing. Never release with failing tests.
# Remove the tag
git tag -d v3.2.0
# Update CHANGELOG.md
# Then re-commit and re-tag
git add CHANGELOG.md
git commit --amend
git tag -a v3.2.0 -m "Release v3.2.0"Edit the GitHub release page directly - you can update the description anytime.
# Delete local tag
git tag -d v3.2.0
# Delete remote tag (if already pushed)
git push origin :refs/tags/v3.2.0
# Fix version in files
# Re-commit and re-tag