Skip to content

I got fiiive on it#7

Merged
hakimjonas merged 19 commits intomainfrom
I-got-fiiive-on-it
Jul 9, 2025
Merged

I got fiiive on it#7
hakimjonas merged 19 commits intomainfrom
I-got-fiiive-on-it

Conversation

@hakimjonas
Copy link
Copy Markdown
Owner

@hakimjonas hakimjonas commented Jul 8, 2025

Release v0.5.0

This PR finalizes the features for the v0.5.0 release of Valar. This update introduces asynchronous validation, a standardized extensibility pattern, and a performance benchmark suite.

Key Features & Improvements

Asynchronous Validation

  • Introduces the AsyncValidator typeclass and AsyncValidator.derive macro to support non-blocking, Future-based validation for I/O-bound rules. The derivation logic seamlessly mixes synchronous and asynchronous validators.

Extensibility Framework

  • Adds the ValidationObserver trait to valar-core as a standard, zero-cost pattern for integrating with external systems like logging and metrics.
  • A new valar-translator module provides a Translator typeclass for internationalization (i18n) of error messages.

Performance Benchmarking

  • A new valar-benchmarks module with a JMH suite has been added to measure performance and guard against regressions. Initial results establish a performance baseline for sync (~45-400ns) and async (~13-16µs) validation paths.

Enhanced Testing

  • The ValarSuite in the valar-munit module has been updated with additional assertion helpers to improve the testing experience.

Internal Refactoring

  • The macro derivation logic has been unified into a single, internal implementation (internal.Derivation), reducing code duplication and improving maintainability.

Build & CI

  • The build has been updated to use JDK 21 and now includes the new valar-translator and valar-benchmarks modules.

Breaking Changes

API Refinement

  • The macro for deriving synchronous validators has been renamed from Validator.deriveValidatorMacro to Validator.derive for consistency with the new AsyncValidator.derive. The MIGRATION.md guide has been updated to reflect this change.

This release completes the planned work for the v0.5.0 milestone and provides a solid foundation for future development.

@hakimjonas hakimjonas self-assigned this Jul 8, 2025
@hakimjonas hakimjonas marked this pull request as ready for review July 9, 2025 10:52
@hakimjonas hakimjonas merged commit 432413b into main Jul 9, 2025
2 checks passed
@hakimjonas hakimjonas deleted the I-got-fiiive-on-it branch November 17, 2025 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant