Releases: andrearaponi/dito
License Update to Apache 2.0
👉 Dito 0.6.0 - License Update to Apache 2.0 🚀
What's New
License Change to Apache 2.0 📝
- Dito is now licensed under the Apache License 2.0, replacing the previous MIT license.
- This change:
- Aligns the project with CNCF standards.
- Provides enhanced legal protection with the included patent clause.
- Increases attractiveness for enterprise adoption.
Added NOTICE File 📄
- A
NOTICE
file has been added to ensure transparency and compliance with third-party dependencies.
Documentation Updates 📚
- Updated the "License" section in the
README.md
.
0.5.1
👉 Dito 0.5.1 - Code Smell Fixes & Test Enhancements
What's New
Code Smell Fixes & Test Improvements 🛠️
- Addressed minor code smells to improve code maintainability.
- Fixed tests for handlers and app, enhancing reliability.
This release focuses on improving code quality and test stability, making Dito more robust and maintainable.
0.5.0
👉 Dito 0.5.0 - WebSocket Proxy Support
What's New
WebSocket Proxy Support 🕸️
Dito now supports WebSocket proxying, allowing you to seamlessly forward WebSocket connections to your backend servers. This feature can be enabled per location, offering flexible and granular WebSocket routing for real-time applications and protocols.
- New
enable_websocket
Configuration:- Easily enable WebSocket support on specific routes by adding
enable_websocket: true
to your location configuration. - Example:
# List of location configurations for proxying requests. locations: - path: "^/test-ws$" # Regex pattern to match the request path. target_url: "wss://echo.websocket.org" # The target URL to which the request will be proxied. enable_websocket: true # Enable WebSocket support for this location. replace_path: true # Replace the matched path with the target URL.
- Easily enable WebSocket support on specific routes by adding
Upcoming Enhancements for WebSocket Support 🔄
Future versions of Dito will include even more advanced WebSocket features:
- Enhanced TLS Support: Configurable TLS settings for secure WebSocket connections, ensuring data integrity and privacy.
- Comprehensive Error Handling: Improved resilience and error management for WebSocket connections to handle unexpected interruptions or connection issues gracefully.
- Detailed Metrics: Real-time metrics for WebSocket traffic, allowing you to monitor performance, connection stability, and data flow with precision.
As always, please thoroughly test this update and share your feedback. Contributions and issue reports are greatly appreciated!
0.4.2
👉 Dito 0.4.2 - Go Version Update to 1.23.2
What's New
Updated Go Version 🚀
- Go 1.23.2 Update: Dito now uses Go version 1.23.2. This update introduces optimizations, security improvements, and new language features that enhance the overall stability and performance of the project.
- Performance Improvements: The latest Go release brings significant performance gains, including faster runtime and optimized memory management.
- Enhanced Security: Includes runtime and compiler security updates, improving the robustness of the application.
- Extended Compatibility: Testing the application with this new version is recommended to ensure full compatibility with all existing features.
As always, please thoroughly test this update and share your feedback. Contributions and issue reports are greatly appreciated!
0.4.1
👉 Dito 0.4.1 - Enable Profiler Flag
What's New
Enable Profiler Flag ⚙️
- Optional Profiling: Introduced a
--enable-profiler
flag to allow optional runtime profiling with thepprof
package.- Pprof Server: When enabled, the profiling server runs on port
6060
, providing valuable insights into application performance. - Advanced Profiling Options: Mutex and block profiling are activated to help identify lock contention and blocking operations, aiding in pinpointing bottlenecks.
- Intended for Development and Testing: This feature facilitates in-depth performance analysis during development and testing phases.
- Pprof Server: When enabled, the profiling server runs on port
Enhancements
- Enhanced Monitoring: This addition allows developers to seamlessly monitor application health and performance metrics, complementing other logging and transport improvements from previous releases.
Feel free to test this new feature and continue to share your feedback. Contributions and issue reports are always appreciated!
0.4.0
👉 Dito 0.4.0 - Custom Transport Configuration & Improved Logging
What's New
Custom Transport Configuration 🚀
- Per-Location HTTP Transport Settings: You can now customize the HTTP transport settings on a per-location basis. This allows for fine-grained control over backend connections, including timeouts, connection limits, and TLS settings.
- Features Include:
- Timeouts and Connection Limits: Configure
idle_conn_timeout
,max_idle_conns
,max_conns_per_host
, etc. - TLS Settings: Manage
tls_handshake_timeout
and enforce HTTP/2 if needed. - Custom Certificates: Specify
cert_file
,key_file
, andca_file
for mTLS connections.
- Timeouts and Connection Limits: Configure
- Features Include:
Improved Logging System
- Asynchronous Logging with Worker Pool: Logging operations are now handled asynchronously using a worker pool to prevent blocking the main request handling.
- Non-Blocking Log Channel: Implemented a non-blocking select statement to avoid blocking when the log channel is full.
- Configurable Buffer Size: You can now configure the size of the log channel buffer to balance memory usage and logging throughput.
- Performance Optimizations: Reduced memory allocations and improved logging efficiency to handle high-throughput scenarios.
Enhancements
- Stability Improvements: Enhanced the transport layer stability by caching transports and ensuring they are updated promptly after configuration changes.
Please test these updates in your environment and provide feedback.
Contributions and issue reports are appreciated.
0.3.1
👉 Dito 0.3.1 - Transport and Cache Fixes
What's New:
- Transport cache handling fix: Resolved an issue where the transport was not being updated immediately after configuration changes. Now, transports are updated promptly to ensure that all requests reflect the latest configuration.
- Cache middleware optimization: Improved the behavior of the cache middleware to handle transport updates correctly. This addresses delays in responses when caching is enabled.
Enhancements:
- Transport layer stability: Introduced caching for transports to enhance the stability and efficiency of the proxy.
- Performance improvements: Optimized the cache middleware to reduce latency, ensuring faster response times when serving cached responses from Redis.
How to Use:
- Ensure that your configuration is up to date and that caching and transport settings are configured correctly in
config.yaml
. - Test the transport updates after configuration changes to ensure proper functionality.
Please test these updates in your environment and provide feedback.
Contributions and issue reports are appreciated.
0.3.0
👉 Dito 0.3.0 - Prometheus Metrics Support
What's New:
- Added Prometheus metrics support: Dito now exposes various metrics for monitoring the proxy's performance and behavior, including custom metrics for HTTP requests, duration, active connections, and data transfer.
- Standard Go and Prometheus metrics: Enabled automatic collection of Go runtime metrics (memory, garbage collection, goroutines) and Prometheus HTTP handler metrics.
Enhancements:
- Configurable metrics support: Metrics can be enabled or disabled via the
config.yaml
file. The default metrics path is/metrics
. - Detailed monitoring: Added custom metrics:
http_requests_total
: Tracks the total number of HTTP requests processed.http_request_duration_seconds
: Measures the duration of HTTP requests.active_connections
: Indicates the number of active connections.data_transferred_bytes_total
: Monitors the amount of data transferred, partitioned by direction (inbound or outbound).
How to Use:
- Enable metrics in the configuration:
metrics: enabled: true path: "/metrics"
Please test this feature in your environments and report any issues.
Feedback and contributions are welcome.
0.2.0
👉 Dito 0.2.0 - Graceful Shutdown Support
What's New:
- Added graceful shutdown feature: Dito now properly handles shutdown signals (SIGINT and SIGTERM) and allows ongoing connections to close gracefully before shutting down.
- Improved server reliability and performance during shutdown operations, ensuring no requests are abruptly interrupted.
Enhancements:
- Implemented server listening for system signals (
SIGINT
andSIGTERM
), enabling graceful termination. - Server now waits for active connections to finish before completing the shutdown process.
How to Use:
No additional configuration is needed.
The server will automatically handle system signals and apply graceful shutdown when receiving termination commands.
Testing and Feedback:
Please test this feature in your environments and report any issues.
Feedback and contributions are welcome.
0.1.0
initial release :D