What's New in Brine2D
Release history and version information for Brine2D.
Latest Release
v1.0 — 2026
First stable release. The core engine is feature-complete and the API is locked.
Release History
| Version | Release Date | Highlights |
|---|---|---|
| v1.0 | 2026 | Entity persistence, AOT serialization, Brine2D.Build, cross-platform CI |
| v0.9.7-beta | 2026 | Input actions, Box2D physics, kinematic character |
| v0.9.6-beta | 2026 | Complete audio overhaul, post-processing effects |
| v0.9.5-beta | 2026 | Single package, framework properties, asset pipeline |
| v0.9.0-beta | Jan 2026 | Package separation, track-based audio, .NET 10 |
| v0.8.0-beta | Dec 2025 | Particle textures, spatial audio, texture atlasing |
| v0.7.0-beta | Nov 2025 | GPU renderer, post-processing, EventBus |
| v0.6.0-beta | Oct 2025 | Scene transitions, UI framework, collision system |
Version Support
| Version | Status | .NET |
|---|---|---|
| v1.0 | ✅ Latest (stable) | .NET 10 |
| v0.9.7-beta | ⚠️ Maintenance | .NET 10 |
| v0.9.6-beta | ❌ End of life | .NET 10 |
| v0.9.5-beta | ❌ End of life | .NET 10 |
| v0.9.0-beta | ❌ End of life | .NET 10 |
| v0.8.0 and earlier | ❌ End of life | — |
Breaking Changes Log
v1.0
No breaking changes. v1.0 is the first stable release.
v0.9.7
- Physics: Old manual
CollisionSystem/Collider/SpatialGridremoved — usePhysicsBodyComponent+Box2DPhysicsSystem - Input layers:
InputLayerManager.CreateLayer()removed — implementIInputLayerand callRegisterLayer()/UnregisterLayer() - Input enum:
Key.Returncorrected toKey.Enter
v0.9.6
- Audio:
PlaySound()now returnsninttrack handle (wasintchannel) - Audio:
StopChannel(int)→StopTrack(nint),PauseChannel(int)→PauseTrack(nint),IsChannelPlaying(int)→IsTrackAlive(nint)
v0.9.5
- Packages: Consolidated into single
Brine2Dpackage (no moreBrine2D.SDL) - Builder:
AddSDL3Rendering()/AddSDL3Input()/AddSDL3Audio()→builder.Configure() - Scenes:
IRenderer,IInputContext,IAudioPlayerremoved from constructors — use framework properties - Lifecycle:
OnInitializeAsyncremoved — useOnLoadAsync - Input enum:
Keys→Key - Component:
OnUpdate(GameTime)removed — useBehavior - Entity.Id:
Guid→long - Scene transition:
LoadSceneAsync→LoadScene(void, fire-and-forget)
v0.9.0
- Audio:
PlaySound()returnsnint(fromint) - Packages: Split into
Brine2DandBrine2D.SDL
v0.8.0
- Scenes: Constructor injection changed —
Logger,World,Renderernow properties - ECS:
Worldis a framework property, not injected
v0.7.0
- Rendering:
SDL3GPURendererintroduced as a separate backend - EventBus: Moved from
Brine2D.ECStoBrine2D.Core
Release Philosophy
Brine2D follows Semantic Versioning:
- Major (1.0, 2.0) — Breaking changes
- Minor (0.9, 0.10) — New features, may include breaking changes in beta
- Patch (0.9.1, 0.9.2) — Bug fixes only, no breaking changes
Stable Phase (Current — v1.0+)
- No breaking changes without a major version bump
- Deprecations announced one minor version before removal
- Long-term support for each major version
- Predictable release schedule
- Production-ready stability
Get Notified
- 🔔 Watch on GitHub — Star the repo for notifications
- 💡 Request features — Open an issue
- 🐛 Report bugs — Bug report template
- 🤝 Contribute — Contributing guide
- 💬 Discussions — GitHub Discussions
See a specific version: v0.9.7 | v0.9.6 | v0.9.5 | v0.9.0 | v0.8.0 | v0.7.0 | v0.6.0