Files
golib/retro
Nicolas JUHEL 61a73ba606 Package Certificates:
- fix bug with cert type marshall/unmarshall
- add old config to allow retro compatibility
- add new type function to retrieve a tls root ca cert instead of a slice of string to get root ca

Package HTTPCli:
- fix default DNS Mapper
- optimze global DNS Mapper
- fix non closing sub goroutine

Package HTTPCli/DNS-Mapper:
- change request function of Root CA with function of root ca cert instance
- add function to return a root ca cert from a function that return a slice of root ca string

Package Config/Components:
- httpcli: bump sub package of certificate, httpcli
- httpcli: adjust code following bump
- httpcli: change request function of Root CA with function of root ca cert instance
- httpcli: add function to return a root ca cert from a function that return a slice of root ca string
- tls: change request function of Root CA with function of root ca cert instance
- tls: add function to return a root ca cert from a function that return a slice of root ca string

Package IOUtils/mapCloser:
- fix bug with mapcloser not stopped
- optimize code & goroutine

Package Logger:
- rework mapCloser call
- optimize mapClaoser managment

Package Request:
- rework error managment
- using []byte instead of buffer to read response body
- add free capability
- optimize memory consumption

Package Socket / Server:
- add filtering error capability
- add params to specify a function called on each new connection and before using the connection
- the new function param allow to update the network incomming connection (like buffer, deadline...)
- rework some useless atomic to direct value to optimize code

Package Socket/Delim:
- rework to optimize memory & variable use
- remove capabilities of update the instance when running, prefert recreate new one if necessary

Other:
- bump dependencies
- minor bug / fix
2025-01-14 15:01:54 +01:00
..
2024-10-11 13:12:57 +02:00
2024-10-11 13:12:57 +02:00
2024-10-11 13:12:57 +02:00
2024-10-11 13:12:57 +02:00
2025-01-14 15:01:54 +01:00
2024-10-11 13:12:57 +02:00
2024-10-11 13:12:57 +02:00

retro

retro is a golib Golang sub-package designed to support backward-compatible models through semantic versioning. It introduces a new struct field tag, retro, which manages the serialization and deserialization of model fields based on specified versions.

retro works with json, yaml, and toml formats and dynamically marshals or unmarshals model data according to the version in use.

Key Features

  • The retro:"default" tag indicates which fields should be considered when no version is specified.
  • Fields without the retro tag but with format tags (like json, yaml, or toml), and without omitempty, will be included in all versions.
  • retro supports logical operators like >, <, >=, and <= in version constraints, allowing fine-grained control over when fields should be included or excluded based on the version.
  • retro intelligently handles conflicting version definitions, such as retro:">v1.0.0,>v1.0.3", ensuring valid behavior and in case on conflicts or any wrong retro tag definition the field will be ignored in the serialization and deserialization.
  • Versioning exceptions can be managed as well. For example, retro:">v1.0.0,v0.0.3" will include the field even if v0.0.3 doesnt meet the condition >v1.0.0 due to the explicit exception.
  • retro allows easily to activate the standard serialization deserialization for your model and to work only with the standard methodologies if needed bypassing retro features.

Additionally, retro respects custom marshal/unmarshal behavior defined for fields in the json, yaml, and toml formats, ensuring seamless integration with your model's existing logic.

Examples and use cases

The retro_test.go file contains real world scenarios and examples on the retro features and usage.