# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.1.2] - 2026-02-11
### Fixed
- Add missing `#[repr(transparent)]` to `sys::Hostname` for consistency with other heapless-based types
- Convert `sys::Hostname` from named struct to tuple struct for proper zero-cost abstraction
## [0.1.1] - 2026-02-11
### Fixed
- Add missing arbitrary::Arbitrary implementation for Username
- Add missing arbitrary::Arbitrary implementation for Distro
## [0.1.0] - 2026-02-11
### Added
- Add `sys` module for system information types
- Add `Arch` enum for CPU architecture types (x86, x86_64, aarch64, arm, riscv32, riscv64, wasm32, wasm64, mips, mips64, powerpc, powerpc64, s390x)
- Add `ArchError` for architecture parsing errors
- Add `Arch::current()` method to get compile-time architecture
- Add utility methods for architecture classification (`is_64_bit`, `is_32_bit`, `is_arm`, `is_x86`, `is_riscv`, `is_wasm`, `is_mips`, `is_powerpc`, `pointer_width`)
- Add `OsType` enum for operating system types (Linux, MacOS, Windows, FreeBSD, OpenBSD, NetBSD, DragonFly, Solaris, Illumos, Android, iOS, Redox, Fuchsia, Hermit, VxWorks, AIX, Haiku)
- Add `OsTypeError` for OS type parsing errors
- Add `OsType::current()` method to get compile-time OS type
- Add utility methods for OS classification (`is_unix`, `is_bsd`, `is_windows`, `is_mobile`, `is_desktop`, `is_embedded`, `is_microkernel`, `is_posix`, `is_tier1`, `family`)
- Add `OsVersion` type for semantic versioning (major.minor.patch)
- Add `OsVersionError` for OS version parsing errors
- Add utility methods for version operations (`is_major_release`, `is_initial_release`, `as_tuple`, `to_short`, `with_patch`, `new_short`)
- Add `KernelVersion` type for kernel versions with release strings (major.minor.patch-release)
- Add `KernelVersionError` for kernel version parsing errors
- Add utility methods for kernel version operations (`is_development`, `is_stable`, `is_lts`, `as_tuple`, `bump_patch`, `bump_minor`, `bump_major`, `without_release`)
- Add `Username` type for POSIX-compliant system usernames (1-32 characters)
- Add `UsernameError` for username parsing errors with variants (Empty, TooLong, InvalidFirstCharacter, InvalidCharacter)
- Add utility methods for username classification (`is_system_user`, `is_service_account`)
- Add `Distro` type for OS distribution names with family detection
- Add `DistroError` for distribution name parsing errors
- Add utility methods for distribution classification (`is_debian_based`, `is_redhat_based`, `is_arch_based`, `is_rolling_release`, `is_lts`)
- Add `Port` type for network port numbers with IANA port range validation
- Add common service port constants (HTTP, HTTPS, SSH, FTP, SMTP, DNS, MySQL, PostgreSQL, Redis, MongoDB, etc.)
- Add `IpAddr` type for type-safe IP address handling (IPv4 and IPv6)
- Add `IpAddrError` for IP address parsing errors
- Support `From`/`FromStr` conversions between `IpAddr` and `core::net::IpAddr`
- Add utility methods for IP address classification (`is_ipv4`, `is_ipv6`, `is_loopback`, `is_unspecified`, `is_multicast`)
- Add `Hostname` type for RFC 1123 compliant DNS hostname validation
- Add `HostnameError` for hostname parsing errors with detailed variants (Empty, TooLong, LabelTooLong, InvalidLabelStart, InvalidLabelEnd, InvalidChar, EmptyLabel)
- Support `TryFrom<&str>` and `FromStr` for `Hostname` construction
- Add utility methods for hostname operations (`is_localhost`, `labels`)
- Add `DomainName` type for RFC 1035 compliant domain name validation (labels can start with digits)
- Add `DomainNameError` for domain name parsing errors with detailed variants
- Add utility methods for domain name operations (`depth`, `is_subdomain_of`, `is_tld`, `labels`)
- Add `Host` enum type that can represent IP addresses, domain names, or hostnames
- Add `HostError` for host parsing errors
- Add automatic type detection parsing with priority: IpAddr > DomainName > Hostname
- Add `SocketAddr` type for socket addresses combining host and port
- Add `SocketAddrError` for socket address parsing errors (MissingPortSeparator, InvalidHost, InvalidPort, EmptyInput)
- Add `StdConversionError` for std::net::SocketAddr conversion errors (NotIpAddress, PortZero)
- Support IPv6 bracket notation in socket addresses (e.g., "[::1]:8080")
- Add `SocketAddr::into_parts()` method to decompose into host and port components
- Add `Host::is_localhost()` method to check if host is localhost
### Changed
### Deprecated
### Removed
### Fixed
### Security
[0.1.0]: https://github.com/bare-rs/bare-types/releases/tag/v0.1.0