# 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.0] - 2025-11-01

### Added

- Initial release of TeleDec
- `@telemetry` decorator for instrumenting functions with telemetry events
- Auto-inferred event names using `@telemetry_service` module attribute and config
- Explicit event name support with `@telemetry {[:custom, :event], [opts]}`
- Multiple telemetry modes:
  - `:span` mode - Full span with start/stop/exception events (~700ns overhead)
  - `:one_shot` mode - Single event on completion (~300ns overhead, no exception tracking)
- Performance optimizations:
  - Zero-arity function optimization (empty map literal)
  - Direct map building from arguments (compile-time)
  - Single-pass variable inclusion
  - Metadata-free mode (`:metadata` option)
  - Selective argument capture (`:args` option)
  - Compile-time disable (`:enabled` option)
- Comprehensive test suite with 12 test cases
- Benchmark suite comparing decorator to manual telemetry code
- Documentation with usage examples and performance characteristics

### Features

- Zero runtime dependencies (except `:telemetry`)
- Compile-time code generation for minimal overhead
- Support for including intermediate variables in stop events
- Automatic exception tracking and reporting
- Global and per-function enable/disable flags
- Configuration-based event name inference

[0.1.0]: https://github.com/viragecloud/tele_dec/releases/tag/v0.1.0
