Refactor semantic version comparison for OTA updates#216
Merged
daveallie merged 1 commit intocrosspoint-reader:masterfrom Jan 3, 2026
Merged
Conversation
25586a9 to
ae126af
Compare
ae126af to
6da03de
Compare
daveallie
approved these changes
Jan 3, 2026
Member
daveallie
left a comment
There was a problem hiding this comment.
Thanks for this optimisation @embedded4ever, my C++-foo isn't super strong so I appreciate the improvements
yingirene
pushed a commit
to yingirene/crosspoint-reader
that referenced
this pull request
Jan 16, 2026
…er#216) ## Summary * **What is the goal of this PR?** (e.g., Fixes a bug in the user authentication module, Implements the new feature for file uploading.) This PR refactors the semantic version comparison logic used during OTA update checks. Memory stats before : RAM: [=== ] 30.8% (used 101068 bytes from 327680 bytes) Flash: [========= ] 85.7% (used **5617830** bytes from 6553600 bytes) Memory stats before : RAM: [=== ] 30.8% (used 101068 bytes from 327680 bytes) Flash: [========= ] 85.7% (used **5616870** bytes from 6553600 bytes) * **What changes are included?** Replaced std::string::substr() and std::stoi() based parsing with a lightweight, heap-free approach. Version parsing is now done in a single pass without creating temporary std::string objects. Behavior remains identical: versions are still compared as MAJOR.MINOR.PATCH. ## Additional Context `std::string::substr() ` creates a new string and performs heap allocation * Add any other information that might be helpful for the reviewer (e.g., performance implications, potential risks, specific areas to focus on).
Unintendedsideeffects
pushed a commit
to Unintendedsideeffects/crosspoint-reader
that referenced
this pull request
Feb 17, 2026
…er#216) ## Summary * **What is the goal of this PR?** (e.g., Fixes a bug in the user authentication module, Implements the new feature for file uploading.) This PR refactors the semantic version comparison logic used during OTA update checks. Memory stats before : RAM: [=== ] 30.8% (used 101068 bytes from 327680 bytes) Flash: [========= ] 85.7% (used **5617830** bytes from 6553600 bytes) Memory stats before : RAM: [=== ] 30.8% (used 101068 bytes from 327680 bytes) Flash: [========= ] 85.7% (used **5616870** bytes from 6553600 bytes) * **What changes are included?** Replaced std::string::substr() and std::stoi() based parsing with a lightweight, heap-free approach. Version parsing is now done in a single pass without creating temporary std::string objects. Behavior remains identical: versions are still compared as MAJOR.MINOR.PATCH. ## Additional Context `std::string::substr() ` creates a new string and performs heap allocation * Add any other information that might be helpful for the reviewer (e.g., performance implications, potential risks, specific areas to focus on).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
file uploading.)
This PR refactors the semantic version comparison logic used during OTA update checks.
Memory stats before :
RAM: [=== ] 30.8% (used 101068 bytes from 327680 bytes)
Flash: [========= ] 85.7% (used 5617830 bytes from 6553600 bytes)
Memory stats before :
RAM: [=== ] 30.8% (used 101068 bytes from 327680 bytes)
Flash: [========= ] 85.7% (used 5616870 bytes from 6553600 bytes)
Replaced std::string::substr() and std::stoi() based parsing with a lightweight, heap-free approach.
Version parsing is now done in a single pass without creating temporary std::string objects.
Behavior remains identical: versions are still compared as MAJOR.MINOR.PATCH.
Additional Context
std::string::substr()creates a new string and performs heap allocation