Skip to content

Avoid repeating identical lowercase extension lookups - #64

Closed
OskarEichler wants to merge 1 commit into
discourse:mainfrom
OskarEichler:codex/mini-mime-skip-identical-fallback
Closed

OskarEichler wants to merge 1 commit into
discourse:mainfrom
OskarEichler:codex/mini-mime-skip-identical-fallback

Conversation

@OskarEichler

Copy link
Copy Markdown

Summary

Skip the fallback database lookup when downcasing an unknown extension leaves it unchanged. Preserve exact-case precedence and mixed-case fallback.

Reproduction and measurement

Instrument Db#lookup_by_extension and call MiniMime.lookup_by_extension('unknown'): previously two lookups of the same key, now one. ZiP still uses two and resolves to application/zip; exact Z retains its own type.

20,000 warmed lowercase misses: 0.00776s before, 0.00555s after locally. Allocations are unchanged (~40,000); this is a bounded microbenchmark, not a general throughput claim. All 2,086 rows in the reviewed main databases plus four case/miss checks pass.

Verification

  • Ruby 4.0.6 via rbenv: eight existing core tests / 22 assertions pass, before and after.
  • Existing optional mime-types parity test: nine tests / one pre-existing error on both baseline and patch (newer reference-data extensions absent from the bundled snapshot). No data refresh or test changes.
  • Full RuboCop: one pre-existing redundant-disable offense on main and each patch, no additions. Ruby syntax and git diff --check pass.
  • No repository tests added/modified under the commissioning repository’s explicit policy; focused checks run externally. Other Ruby versions/platforms were not run locally.

Compatibility

No intended breaking changes or dependency/data/version updates. Lookup results and bounded cache semantics remain unchanged.

@ZogStriP
ZogStriP requested a review from SamSaffron September 1, 2026 15:52
@SamSaffron SamSaffron mentioned this pull request Sep 2, 2026
@SamSaffron

Copy link
Copy Markdown
Member

I have this (and the other 2 prs) sorted in: #67

needed to do a bunch of cleanup 🤗

SamSaffron added a commit that referenced this pull request Sep 2, 2026
Require Ruby 3.3 and refresh the bundled MIME database from
mime-types-data 3.2026.0701. Use byte offsets for Unicode-safe database
lookups, avoid duplicate lowercase misses, and preserve extension
priorities when rebuilding the database.

Update CI to cover current Ruby implementations and runners.

closes #64, #65, #66
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants