mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
3494b699ef
Replace microsecond storage with nanosecond storage in struct mrb_time while maintaining full backward compatibility and zero memory increase. Changes: - Replace 'usec' field with 'nsec' field in struct mrb_time - Preserve full nanosecond precision from timespec_get/clock_gettime - Add Time#nsec and Time#tv_nsec methods for Ruby spec compliance - Update Time#usec to compute microseconds from nanoseconds - Convert all arithmetic operations to handle nanosecond precision - Add comprehensive tests for nanosecond functionality Platform support: - Modern systems: True nanosecond precision via timespec_get/clock_gettime - Older systems: Microsecond precision converted to nanoseconds (gettimeofday) - Minimal systems: Second precision with synthetic microseconds (time) Benefits: - Zero memory overhead (struct remains 80 bytes) - 100% backward compatible (all existing tests pass) - Better precision for time arithmetic and comparisons - Ruby API compliant with standard nanosecond methods - Automatic precision upgrade on capable systems Co-Authored-By: Claude <noreply@anthropic.com>