Releases: go-sprout/sprout
v1.0.0-rc.2
🌱 A New Era of Functionality, Flexibility, and Performance!
We’re thrilled to announce the v1.0.0-rc2 release of Sprout, marking a significant step forward in our mission to create the most powerful and flexible templating library for Go developers. This release introduces major features, critical fixes, and exciting new tools to help you build more efficient and secure templates.
🌟 Key Features & Changes
This section's comparisons are based on Sprig v3.2.3. If you're totally new, welcome! Go ahead with Getting started
🚀 New Core Features
- Migration to Function Handler: All functions have been migrated under a unified function handler to streamline function management. Documentation.
- Registry System (Loader): Introduced a new registry system for modular function management, supporting easier extension and organization of functions. Documentation.
- Registry System (Group): With the new registry system, a solution for grouping registries are born to organize your registries. Documentation.
- Safe Functions: New safe versions of functions that follow Go's template standards, providing flexible error handling options. Documentation.
- Function Notices: Added real-time notices when specific functions are called to warn or inform users of critical behavior. Documentation.
- Function Aliases: Added function aliases to ensure smooth transition and backward compatibility. Documentation.
🔄 Backward Compatibility
- Reimport Functions from Sprig: Maintained backward compatibility by reimporting core functions from Sprig. Documentation.
- Backward Compatibility Documentation: Updated docs to ensure seamless migration and backward compatibility. Documentation.
🛠 Enhancements and Fixes
- Optimized Memory Footprint: Performance improvements were made to reduce memory usage across the board. Benchmarks.
- Fixed CamelCase Logic: Updated CamelCase and PascalCase transformation logic to handle edge cases better. Documentation
- Never more panics: Rework functions how cause panics on template engines to ensure a better stability. Documentation.
🌐 New Utilities
- Batch of New Functions: Introduced a wide range of functions for slices, regex manipulations, and conversions, expanding Sprout's toolkit significantly. See PR 70.
- Network Registry: New functions for handling IP, CIDR, and MAC address manipulations in templates. See PR 71.
- SHA512 Checksums: Added
sha512sum
to the checksum registry with useful notices for end-users. See PR 59. - New Struct Method
hasField
: Added a method for checking struct fields dynamically. See PR 61. - String Capitalization Functions: New string capitalization functions with full Unicode and Latin rune support. See PR 62.
toDuration
Conversion Function: A new utility to simplify time conversions across templates. See PR 27.
📚 Documentation
- Fancy and complete documentation: Create a fancy and complete documentatio, ensuring they’re up to date and aligned with Sprout’s growth. Documentation
🏆 A Special Thanks to Our Contributors
A heartfelt thank you to everyone who contributed to this v1.0.0 journey, particularly @42atomys, whose tireless work and commitment have made this release possible. Special thanks to @mbezhanov, @andig, @ccoVeille for their valuable contributions and to @caarlos0 for the support in making decisions and for being the second maintainer of the Sprout organization.
🔮 Looking Ahead
This release candidate is a crucial step towards the official v1.0.0 release. We encourage you to test the new features, provide feedback, and help us fine-tune the final version. We’re incredibly excited for what’s to come and can’t wait to see how Sprout will evolve with your help!
Let’s continue growing Sprout together and make this library the best tool for Go developers everywhere!
Full Changelog: View all changes.
v1.0.0-rc1: Sprout Genesis ⚡🌱
🌱 A New Era of Functionality, Flexibility, and Performance!
We’re thrilled to announce the v1.0.0-rc1 release of Sprout, marking a significant step forward in our mission to create the most powerful and flexible templating library for Go developers. This release introduces major features, critical fixes, and exciting new tools to help you build more efficient and secure templates.
🌟 Key Features & Changes
This section's comparisons are based on Sprig v3.2.3. If you're totally new, welcome! Go ahead with Getting started
🚀 New Core Features
- Migration to Function Handler: All functions have been migrated under a unified function handler to streamline function management. Documentation.
- Registry System (Loader): Introduced a new registry system for modular function management, supporting easier extension and organization of functions. Documentation.
- Safe Functions: New safe versions of functions that follow Go's template standards, providing flexible error handling options. Documentation.
- Function Notices: Added real-time notices when specific functions are called to warn or inform users of critical behavior. Documentation.
- Function Aliases: Added function aliases to ensure smooth transition and backward compatibility. Documentation.
🔄 Backward Compatibility
- Reimport Functions from Sprig: Maintained backward compatibility by reimporting core functions from Sprig. Documentation.
- Backward Compatibility Documentation: Updated docs to ensure seamless migration and backward compatibility. Documentation.
🛠 Enhancements and Fixes
- Optimized Memory Footprint: Performance improvements were made to reduce memory usage across the board. Benchmarks.
- Fixed CamelCase Logic: Updated CamelCase and PascalCase transformation logic to handle edge cases better. Documentation
- Never more panics: Rework functions how cause panics on template engines to ensure a better stability. Documentation.
🌐 New Utilities
- Batch of New Functions: Introduced a wide range of functions for slices, regex manipulations, and conversions, expanding Sprout's toolkit significantly. See PR 70.
- Network Registry: New functions for handling IP, CIDR, and MAC address manipulations in templates. See PR 71.
- SHA512 Checksums: Added
sha512sum
to the checksum registry with useful notices for end-users. See PR 59. - New Struct Method
hasField
: Added a method for checking struct fields dynamically. See PR 61. - String Capitalization Functions: New string capitalization functions with full Unicode and Latin rune support. See PR 62.
toDuration
Conversion Function: A new utility to simplify time conversions across templates. See PR 27.
📚 Documentation
- Fancy and complete documentation: Create a fancy and complete documentatio, ensuring they’re up to date and aligned with Sprout’s growth. Documentation
🏆 A Special Thanks to Our Contributors
A heartfelt thank you to everyone who contributed to this v1.0.0 journey, particularly @42atomys, whose tireless work and commitment have made this release possible. Special thanks to @mbezhanov, @andig, @ccoVeille for their valuable contributions and to @caarlos0 for the support in making decisions and for being the second maintainer of the Sprout organization.
🔮 Looking Ahead
This release candidate is a crucial step towards the official v1.0.0 release. We encourage you to test the new features, provide feedback, and help us fine-tune the final version. We’re incredibly excited for what’s to come and can’t wait to see how Sprout will evolve with your help!
Let’s continue growing Sprout together and make this library the best tool for Go developers everywhere!
Full Changelog: View all changes.
v0.6.0: Sprout Evolution 🌱
💡 Cultivating Precision, One Function at a Time!
🌟 Major Feature: Safe Functions
Now, all functions return errors and follow Go conventions (enforcing the "must" pattern). This ensures you never miss a failure in your template. By default, functions will stop rendering if an error occurs, providing a more predictable and reliable experience. Safe Functions, however, allow you to bypass this strict error handling, letting the template continue rendering even when an error is encountered. This offers flexibility when strict error enforcement is not necessary. See (@42atomys) PR 65.
Read more about safe functions on official documentation.
🌟 Major Feature: Function Call Notices
Function Call Notices provide feedback or warnings when specific functions are executed, alerting users to potential side effects or special behaviors (like deprecations). This helps ensure more informed decisions during template rendering. See (@42atomys) PR 58.
Key Benefits:
- User Awareness: Alerts users to important function behavior, such as deprecations or critical warnings, enhancing their understanding without risking breaking an end user's template.
- Easier Debugging: Notices highlight issues in real-time, making it simpler to trace and resolve problems during execution.
- Improved Control: Users gain better insight into function calls, allowing for more deliberate handling of key actions in templates.
Read more about notices on official documentation.
🚀 New Features
- String Capitalization Functions: Added new functions to capitalize strings, fully supporting Unicode and Latin runes. See (@42atomys) PR 62 and PR 63.
- SHA512 Checksum in Registry: Introduced
sha512sum
to the checksum registry, complete with informative notices. See (@42atomys) PR 59. hasField
for Structs: A newhasField
method to check fields in structs is now available. See (@mbezhanov) PR 61.
🛠 Fixes & Improvements
- Dropped v0.1 Error Handling: Removed legacy error handling until a safe/must decision is finalized in the RFC. See (@42atomys) PR 52.
- Documentation Updates: Added function signatures to the conventions, making it easier to understand their usage. See (@42atomys) PR 64.
🐛 Bug Fixes
- Unicode Capitalization Fix: Resolved issues with string capitalization involving Unicode and Latin runes. See (@42atomys) PR 63.
- Release Candidate Fixes: Addressed problems with v0.6.0-rc.1 to ensure stability and performance. See (@42atomys) PR 68.
💚 Contributors
- @mbezhanov made their first contribution in #61
🌱🌾⭐ Hit that star button like a space explorer hitting hyperdrive! Stay on board for our next release! 🚀
Release Candidate v0.6.0-rc1 👨🌾
We are excited to present the pre-release version, which will be followed by the final release.
The full release note will be available only in the final release.
We would like to express our heartfelt gratitude to all the contributors who have participated in this pre-release by sharing their ideas, feedback, and valuable contributions.
We value and appreciate your input at all times. 💜
v0.5.1: Sprout Growth 🌿
💡 Cultivating Code, Growing Solutions!
⚡ Performance Improvements
- Memory Footprint Reduction: Reduced overall memory footprint for better performance. See (@42atomys) PR 56.
🐛 Bug Fixes
- Default Logger Initialization: Fixed an issue where the default logger had a bad initialization. See (@42atomys) PR 48.
- Logger Accessibility: Resolved a problem where loggers were not accessible due to duplicated pointers. See (@42atomys) PR 50.
- Sprigin CamelCase Consistency: Ensured that
sprigin
camelcase returns are consistent. See (@42atomys) PR 55.
🛠️ Chores
- Go Task Integration: Replaced Makefile with Go Task for better task management. See (@42atomys) PR 54.
⭐ If you find our growth inspiring, give us a star! Let's navigate the digital greenery together! 🚀
v0.5.0: Sprout Growth 🌿
💡 Nurturing Ideas, Harvesting Innovation!.
🌟 Major Feature: Registry System Unleashed!
- Revamped Architecture: Introducing the powerful registry system (aka loader). This refactor modularizes all methods into separate registries. See (@42atomys) PR 46
- Handler & Registry Interfaces: New interfaces with clear rules to streamline function management.
- Seamless Migration: All functions are now in registries, with backward compatibility via
FuncsMap
inspringin
See Transitioning from Sprig.
Read more about the registry system in the official documentation.
Caution
This update may cause errors due to changes required on your side. You can either switch to using the new system or temporarily use the replacement package: github.com/go-sprout/sprout/sprigin
📚 Fully Documented
- In-Depth Docs: Detailed documentation and a handy glossary are now available. Explore more sprout.atom.codes.
- README: Updated the documentation and README to reflect all recent changes. Check out the latest README.md.
🐛 Bug Fixes
toDuration
Doc Update: Added a practical example showing how to convert durations to seconds usingtoDuration
. This is based on real test cases to make time formatting easier. See (@cbandy) PR 44.
New Contributors
Full Changelog: v0.4.1...v0.5.0
⭐ If you find our growth inspiring, give us a star! Let's navigate the digital greenery together! 🚀
v0.4.1: Sprout Blossom 🌸
💡 Cultivating Innovation, One Sprig at a Time!
🚀 Features
- Reducing YAML Dependencies Footprint: Improved project efficiency by reducing dependencies. See (@andig) PR 38.
🐛 Bugs fixes
- Timezone Leak Fix in
toDate
Method: Resolved an issue affecting date calculations. See (@42atomys) PR 42. - Backward Compatibility Documentation: Added documentation for ensuring seamless upgrades. See (@42atomys) PR 43.
💚 Contributors
Full Changelog: View changes from v0.4.0 to v0.4.1
🌱🌴⭐ If you find our growth inspiring, give us a star! Let's navigate the digital greenery together! 🚀
v0.4.0: Sprout Blossom 🌸
💡 Cultivating code is something beautiful.
🚀 Features
- Enhanced Conversions Group: New functions (
toBool
,toUint
,toUint64
) and comprehensive documentation have been added to the conversions group, broadening our library's functionality and making it more user-friendly. See (@42atomys) PR 33. - YAML Functions Unleashed: Implementing YAML functions (
fromYaml
,toYaml
.mustFromYaml
,mustToYaml
) inspired by Helm's robust toolset, we've extended our configuration management capabilities. See (@42atomys) PR 36.
🛠 Fixes from sprig issues
- Merge Function Improvement: The merge function has been tweaked to preserve the zero value in destination structs, ensuring more predictable and accurate data handling. See (@42atomys) PR 34.
- String Transformation Logic Update: Corrected the logic for transforming strings to CamelCase and PascalCase to avoid previous inconsistencies and errors. See (@42atomys) PR 35.
Full Changelog: View changes from v0.3.0 to v0.4.0
🌱🌿⭐ If you find our growth inspiring, give us a star! Let's navigate the digital greenery together! 🚀
v0.3.0: Moved Farm 🌾
💡 Sprouting New Possibilities in Every Release!
Important
The project has moved to a new GitHub home github.com/go-sprout/sprout !
🚀 Features
- Unified Function Management: All functions are now neatly organized under the new FunctionHandler, streamlining how functionalities are handled within the library. This consolidation is crucial for enhancing library operations and future development. See (@42atomys) PR 14.
- Introducing
toDuration
Conversion: A new utility function,toDuration
, has been added to simplify time conversions across various formats, enhancing our toolkit's versatility. See (@42atomys) PR 27.
🛠 Documentation and Community
- Project's New Home: The project has moved to a new GitHub home, centralizing where updates and community interactions will take place. Visit us at: Sprout on GitHub.
- Community Files Update: All community-related files have been refreshed to better support our growing community of developers and contributors. See (@42atomys) PR 12.
Full Changelog: View changes from v0.2.0 to v0.3.0
🌱🌾⭐ Don't forget to star us if you love what we're growing! Your support propels us forward! 🚀
v0.2.0: Garden Genesis 🌱
💡 Cultivating Innovation, One Sprig at a Time!
🚀 Features
- Creating the Root of the Sprout: Sprouts are now an evolution of Sprig with a standalone function handler. See (@42atomys) PR 2.
- Allowing Function Aliasing: Enables developers to use aliases for their templates. In Sprout, this feature is used for backward compatibility with Sprig. See (@42atomys) PR 3.
- Full documentation available here: https://docs.atom.codes/sprout/function-aliases
🛠 Chore
- Documentation Available: Documentation can be found at https://docs.atom.codes/sprout.
- README Refactor: The README has been updated to reflect the project's vision and its future. See (@42atomys) PR 4.
Full Changelog: v0.1...v0.2
🌱🌾⭐ Hit that star button like a space explorer hitting hyperdrive! Stay on board for our next release! 🚀