Releases: muktihari/fit
v0.20.0
Breaking Changes
proto.DeveloperField
struct is simplified, now only consist ofNum
,DeveloperDataIndex
, andValue
, other fields are removed.proto.Sizeof
func now only take one parameter: proto.Value.
What's Changed
- chore(deps): bump github/codeql-action from 3.25.6 to 3.25.7 by @dependabot in #305
- chore: clean up test code by @muktihari in #306
- refactor/perf(factory): optimize message/field lookup, reduce memory by @muktihari in #307
- refactor/perf(proto)!: simplify DeveloperField structure by @muktihari in #308
- chore(proto): clean up code by @muktihari in #309
- perf: remove unnecessary operations by @muktihari in #310
Full Changelog: v0.19.2...v0.20.0
v0.19.2
What's Changed
- chore: clean up code, fix typo and update docs by @muktihari in #299
- cli: fitactivity fix combined FIT unable to upload to Garmin Connect by @muktihari in #300
- tests: clean up benchmark code by @muktihari in #301
- chore(filedef): clean up unnecessary developer-field-copy by @muktihari in #302
- chore: make fields/developerFields n buffer size 255 instead of 256 by @muktihari in #303
- chore: update CI and go.mod by @muktihari in #304
Full Changelog: v0.19.1...v0.19.2
v0.19.1
What's Changed
- fix: update rule regarding field num timestamp by @muktihari in #298
Full Changelog: v0.19.0...v0.19.1
v0.19.0
Breaking Changes:
- filedef: Activity's field named
SegmentLap
is a slice but the name is not plural, it is changed toSegmentLaps
- filedef:
ToMesgs func
andToMesg interface
are now removed as it was previously marked as deprecated.
What's Changed
- chore: fix typo and update docs by @muktihari in #289
- fix!: filedef's activity field SegmentLaps typo by @muktihari in #290
- fix: encoder reset did not assign new writer by @muktihari in #291
- chore: update compile-time assertions by @muktihari in #292
- perf: remove unnecessary alloc on (*Encoder).Reset() by @muktihari in #293
- fix: datetime's ToUint32 when time arg is before epoch by @muktihari in #294
- chore: remove unnecessary deferred func on decoder by @muktihari in #296
- docs: update package profile documentation by @muktihari in #295
- fix!: filedef ToFIT's timestamp sorting algorithm by @muktihari in #297
Full Changelog: v0.18.2...v0.19.0
v0.18.2
What's Changed
- chore: filedef clean up code by @muktihari in #280
- fix: decoder's CheckIntegrity should not remember error by @muktihari in #283
- chore(deps): bump github/codeql-action from 3.25.5 to 3.25.6 by @dependabot in #281
- chore(deps): bump codecov/codecov-action from 4.4.0 to 4.4.1 by @dependabot in #282
- chore: clean up code and update code docs by @muktihari in #284
- fix: compressed timestamp header wrong header value by @muktihari in #285
- cli: update fitdump and fitprint by @muktihari in #286
- docs: update usage.md by @muktihari in #287
- docs: update usage.md by @muktihari in #288
Full Changelog: v0.18.1...v0.18.2
v0.18.1
What's Changed
- chore(deps): bump codecov/codecov-action from 4.3.1 to 4.4.0 by @dependabot in #270
- perf: proto.Any will no longer allocate slice by @muktihari in #271
- fix: encoder compress timestamp by @muktihari in #272
- chore(deps): bump actions/checkout from 4.1.5 to 4.1.6 by @dependabot in #273
- perf: decoder options is no longer allocate by @muktihari in #274
- perf: encoder options and validatorOptions are no longer allocate by @muktihari in #275
- chore: fix typo by @muktihari in #276
- chore: factory's CreateMesg: put timestamp field at the beginning by @muktihari in #277
- chore: clean up code and docs by @muktihari in #278
- fix: decoder developer field string handler by @muktihari in #279
Full Changelog: v0.18.0...v0.18.1
v0.18.0
What's Changed
- docs: fix broken link on README.md by @muktihari in #266
- chore(deps): bump github/codeql-action from 3.25.4 to 3.25.5 by @dependabot in #268
- profile!: bump version to v21.141 by @muktihari in #269
Full Changelog: v0.17.2...v0.18.0
v0.17.2
What's Changed
- feat: add mesgdef scaled value and degrees setter by @muktihari in #263
- chore: clean up kit's packages and add doc.go by @muktihari in #264
- chore: make all sentinel errors constant by @muktihari in #265
Full Changelog: v0.17.1...v0.17.2
v0.17.1
What's Changed
- fix: decoder on handling developer data and other improvements by @muktihari in #262
Full Changelog: v0.17.0...v0.17.1
v0.17.0
What's Changed
Brief Summary
- Fix misspell on generated code (need to break the prior version)
The Profile.xlsx file, retrieved from https://developer.garmin.com/fit/download, that we use to generate the building block of this SDK contains some misspelled words. For example, a type named "connect_iq_app_managment" where "managment" is a misspelling of "management", this type will be generated as typedef "ConnectivityCapabilitiesConnectIqAppManagment". This version fixes it as "ConnectivityCapabilitiesConnectIqAppManagement". For details on other misspelled words, please check PR-#252.
-
Fix bool and []bool unmarshal value (need to break the prior version)
Previously, bool and []bool will be decoded/unmarshaled as uint8 and []uint8 respectively as the proto.UnmarshalValue does not have context regarding profile.ProfileType. This issue creates invalid values when we convert proto.Message into mesgdef's structs that have field typed bool. And also, this might create confusion to the users when they expect to get bool or []bool value but instead receiving uint8 and []uint8. This version fixes the issue, now proto.UnmarshalValue is receiving additional parameter: profile.ProfileType. -
More robust FIT SDK: Fuzz testing is added to the repository
Since this fuzz testing is introduced, we got some edge-cases when we encounter a bad encoded FIT files, some of them may cause panic to our SDK, and the others causing undefined behavior, these problems are now fixed. -
Performance improvement, the version is faster and using less memory than prior version.
We reduce some instructions in our code to improve the speed. We achieve lowering memory usage when decoding Common File Types using filedef's listener by optimizing channel buffer size and we significantly speed up encoding process by optimizing proto.Value related items. -
For other small changes, please see references below.
References:
- chore(deps): bump softprops/action-gh-release from 2.0.4 to 2.0.5 by @dependabot in #238
- fix: decoder integer divide by zero on invalid basetype by @muktihari in #239
- chore: fix typo on encoder docs by @muktihari in #240
- tests: add fuzz test by @muktihari in #241
- chore(deps): bump github/codeql-action from 3.25.3 to 3.25.4 by @dependabot in #242
- fix: decoder on handling invalid basetype by @muktihari in #243
- fix: proto value marshal empty string slice by @muktihari in #244
- chore(deps): bump ossf/scorecard-action from 2.3.1 to 2.3.3 by @dependabot in #245
- fix: decoder handle compressed timestamp for unknown field by @muktihari in #246
- fix: proto value unmarshal strings as utf8 string by @muktihari in #247
- tests: update fuzz logic by @muktihari in #248
- cli: update fitconv by @muktihari in #249
- fix: decoder on handling string, mainly on developer fields by @muktihari in #250
- fix: update readbuffer minReadBufferSize by @muktihari in #251
- fix!: misspell on generated code due to Profile.xlsx's misspell issue by @muktihari in #252
- chore: go mod tidy by @muktihari in #253
- cli: update fitconv by @muktihari in #254
- perf: optimize channel buffer and object pooling by @muktihari in #255
- perf: decoder reduce 1 alloc for sync.Once value by @muktihari in #256
- chore: clean up redundant code on crc checking by @muktihari in #257
- perf: micro optimizations by @muktihari in #258
- fix!: unmarshal boolean value should produce bool(s) instead of uint8(s) by @muktihari in #259
- perf: improve marshal and unmarshal slice value by @muktihari in #260
- chore: encoder clean up for-loop code by @muktihari in #261
Full Changelog: v0.16.5...v0.17.0