# 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).

## [1.0.0] - 2025-07-18

### Added
- Development tooling configuration
- Initial project setup with development tooling
- Comprehensive documentation and README
- Quality assurance tools (Credo, Dialyzer, Spellweaver)
- **Core Algorithm**: Implemented `CommonTwos.of/2` function for finding common factors of 2
- **Bitwise Operations**: Efficient algorithm using `Bitwise.bor`, `Bitwise.band`, and `Bitwise.bsr`
- **Type Safety**: Comprehensive type specs for all functions
- **Edge Case Handling**: Proper handling of zero values and edge conditions

### Documentation
- **Module Documentation**: Complete `@moduledoc` with algorithm explanation and examples
- **Function Documentation**: Detailed `@doc` for `of/2` with parameters, returns, and examples
- **README.md**: Comprehensive project documentation with usage examples
- **API Reference**: Complete documentation of public functions and their behavior

### Development
- **Project Configuration**: Full development tooling setup
- **Quality Tools**: Credo for static analysis, Dialyzer for type checking
- **Documentation Tools**: ExDoc for HTML documentation generation
- **Spell Checking**: Spellweaver integration with custom word list
- **Code Standards**: nstandard for formatting and standards enforcement

### Infrastructure
- **License**: Apache 2.0 license with University of Kitakyushu copyright
- **Package Configuration**: Hex.pm package configuration for distribution
- **Development Aliases**: `mix check` for comprehensive quality assurance
- **Dependencies**: Production and development dependencies properly configured

### Technical Details
- **Algorithm**: Recursive implementation counting trailing zeros in binary representation
- **Return Format**: Tuple `{shift, reduced_a, reduced_b}` with shift count and reduced values
- **Performance**: Efficient bitwise operations avoiding division
- **Compatibility**: Supports Elixir ~> 1.14 and later


---

## Version History

- **1.0.0**: Production release with complete implementation and documentation

## Contributing

When contributing to this project, please update this changelog with your changes following the format above. Include:

- **Added**: New features
- **Changed**: Changes in existing functionality
- **Deprecated**: Soon-to-be removed features
- **Removed**: Removed features
- **Fixed**: Bug fixes
- **Security**: Vulnerability fixes

## Links

- [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
