Download Latest Version v4.4.1 -- Performance_ 36_ fewer allocations source code.zip (80.6 kB)
Email in envelope

Get an email when there's a new version of ozzo-validation

Home / v4.4.0
Name Modified Size InfoDownloads / 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.UUIDv7 validation rule per RFC 9562 (#205 by @dmitryzhvinklis)
  • is.ULID validation rule (#171 by @upamune)
  • is.Origin validation rule for CORS origins (#198 by @nguyenvantuan2391996)
  • OptionalKey() and DynamicMap() 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 to By() 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.E164 rejects phone numbers without + prefix (spec-correct)
  • Each() with By() on pointer slices passes *T instead of T
  • IsEmpty() returns true for zero-valued structs (was only time.Time{})
  • Min()/Max() validate numeric zero and time.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.

Source: README.md, updated 2026-08-04