Skip to content

v0.0.40

Choose a tag to compare

@tigerroll tigerroll released this 28 Jun 23:49
· 119 commits to main since this release
a768efd

Release

📝 Overview

In this release, we have significantly revamped our documentation to clearly articulate the design philosophy behind building robust batch systems with Go. On the technical side, we have abstracted transaction context management to ensure safer, more consistent implementation across the framework.

🚀 Key Changes

1. Design Philosophy & Documentation Refresh 📖

  • README Revamp: We have updated our message from "the dilemma of Go batching" to a proactive approach: "Moving beyond DIY by embracing established wisdom." We have explicitly defined Surfin’s three core design principles: "Process in chunks," "Persist state," and "Explicit restart points."
  • New Article Added: Added docs/articles/batching-the-go-way-inheriting-enterprise-patterns.md. This article dives deep into how to implement JSR-352 principles in Go and why the "separation of concerns" is vital for batch applications.
  • Roadmap Reorganized: docs/strategy/roadmap.md has been overhauled. It is now organized by use-cases (Implemented, Upcoming, Planned, Future) rather than a simple feature list, making it easier to understand what you can achieve with Surfin.

2. Robust Transaction Management 🛡️

  • Context Abstraction: Replaced direct usage of context.WithValue(ctx, "tx", ...) with the new tx.ContextWithTx and tx.TxFromContext helper functions. This eliminates hard-coded context keys and enables type-safe transaction propagation.
  • Test Suite Update: Updated all related test cases to utilize the new helper functions, ensuring consistency throughout the codebase.

3. API & Configuration Refinement ⚙️

  • WebProxyConfig Cleanup: Removed unnecessary mock server-related fields (MockResponse, MockStatus) from WebProxyConfig and added APIEndpoint. The Type field description has also been streamlined.
  • Enhanced Listener Flexibility: Updated the properties type in NewLoggingJobListenerBuilder from map[string]string to map[string]interface{} to allow for more flexible configuration injection.

4. Other Improvements 🔧

  • Naming Convention: Renamed GORMJobRepository to SQLJobRepository in both documentation and implementation to better reflect its generic purpose.

With this release, Surfin takes a significant step forward from being just a library to becoming a framework that shares a cohesive design philosophy. We encourage you to check out the new documentation! 🥂