| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-08-04 | 1.7 kB | |
| v4.4.0 -- Revival Release source code.tar.gz | 2026-08-04 | 54.3 kB | |
| v4.4.0 -- Revival Release source code.zip | 2026-08-04 | 79.8 kB | |
| Totals: 3 Items | 135.8 kB | 0 | |
Revival release — ozzo-validation is actively maintained again after 6 years.
12 community PRs merged, maintainer bug fixes, modernized CI infrastructure.
Added
is.UUIDv7validation rule per RFC 9562 (#205 by @dmitryzhvinklis)is.ULIDvalidation rule (#171 by @upamune)is.Originvalidation rule for CORS origins (#198 by @nguyenvantuan2391996)OptionalKey()andDynamicMap()convenience constructors (#151 by @Jessinra)EachUntilFirstError()rule for large collections (#93 by @geekflyer)- GitHub Actions CI, golangci-lint, Codecov (99.5% coverage), benchmark infrastructure
Fixed
- E.164 phone validation now requires
+prefix per ITU-T standard (#208 by @Yanhu007) - Domain regex allows uppercase in final character (#197 by @mhargrove)
Each()now passes pointers correctly toBy()callbacks (#160 by @dane)IsEmpty()treats all zero-valued structs as empty (#144 by @soranoba)Errors.Error()no longer panics on nil values (#212)Min()/Max()now validate zero values instead of silently skipping them (#212)- README install command, code examples, documentation
Breaking Changes
These are bug fixes — the old behavior was incorrect:
is.E164rejects phone numbers without+prefix (spec-correct)Each()withBy()on pointer slices passes*Tinstead ofTIsEmpty()returnstruefor zero-valued structs (was onlytime.Time{})Min()/Max()validate numeric zero andtime.Time{}(were silently skipped)
Thank You
Thanks to all contributors who waited patiently — some PRs were open for 5+ years. Special thanks to @qiangxue for entrusting the project to new maintainers.